1

データ インポート ハンドラーでインデックスを作成しているときに、いくつかのフィールドを solr インデックスに追加しようとしています。

以下は私のdata-config.xmlです

<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
                 url="jdbc:mysql://localhost:3306/db" user="*****" password="*********"/>
    <script><![CDATA[
        function addMergedPdt(row)
        {
            var m = row.get('mergedPdt');
            if(m == null)
            {
                row.put('mergedPdt',9999999999); 
            }       
            return row;
        }


            ]]></script>

    <script><![CDATA[
        function transform(row)   
        {

            if(row.get(mergedPdt) == null)
            {
                row.put('catStock', 0);
                row.put('catPxMrp',0);
                row.put('catPrice',0);
                row.put('catCount',1)
                row.put('catRating',0);
                row.put('catAval',0);
                return row;
            }
            else
            {
                row.put('catAval',1);
                return row;
            }

        }
    ]]></script>


<document>
    <entity name="product" onError="continue" transformer="script:addMergedPdt" query="select p.id, name, image, stock, lower(p.seller) as seller, brand, 
        cast(price as signed) as price, cast(pxMrp as signed) as pxMrp, mergedPdt, shipDays, url, cast(rating as signed) as rating, 
        disc(price, pxMrp) as discount, mc.node as seller_cat, oc.node as cat, substring_index(oc.node, '|', 1) as cat1, 
        substring(substring_index(oc.node, '|', 2), length(substring_index(oc.node, '|', 1)) + 2) as cat2, 
        substring(substring_index(oc.node, '|', 3), length(substring_index(oc.node, '|', 2)) + 2) as cat3  
        from _products as p, _mergedCat as mc, _ourCat as oc where active = 1 and cat_id = mc.id and ourCat = oc.id and 
        ('${dataimporter.request.full}' != 'false' OR last_visited &gt; '${dataimporter.last_index_time}') limit 10000">
    <!-- To Papulate the Catalog Data -->
    <entity name="mergedPdt" transformer="script:transform"  onError="continue" query = "SELECT mergedPdt,count(*) as catCount,cast(max(stock) as signed) as catStock,cast(max(pxMrp) as signed) as catPxMrp,cast(min(price) as signed) as catPrice,cast(avg(rating) as signed) as catRating FROM `_products` where mergedPdt = ${product.mergedPdt}"/>
 </entity>

次のようなエラーが発生しています

org.apache.solr.handler.dataimport.DataImportHandlerException: org.apache.solr.solr の org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:70) でエンティティ mergedPdt 処理ドキュメント # 10000 のスクリプトを呼び出し中にエラーが発生しました。 org.apache.solr.handler.dataimport.EntityProcessorWrapper.applyTransformer(EntityProcessorWrapper.java:198) の handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:59) org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow( EntityProcessorWrapper.java:256) org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:475) org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:514) org org.apache.solr の .apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:414)。handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:329) の org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:232) の org.apache.solr.handler.dataimport.DataImporter.doFullImport( DataImporter.java:416) で org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:480) で org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461) が発生しましたby: java.lang.NoSuchMethodException: no such method: transform at com.sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:286) at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:258) ) at org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:55) ... 10 詳細org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:416) で handler.dataimport.DocBuilder.execute(DocBuilder.java:232) org.apache.solr.handler.dataimport.DataImporter.runCmd( DataImporter.java:480) org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461) 原因: java.lang.NoSuchMethodException: no such method: transform at com.sun.script.javascript .RhinoScriptEngine.invoke(RhinoScriptEngine.java:286) at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:258) at org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:55) ) ... 10以上org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:416) で handler.dataimport.DocBuilder.execute(DocBuilder.java:232) org.apache.solr.handler.dataimport.DataImporter.runCmd( DataImporter.java:480) org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461) 原因: java.lang.NoSuchMethodException: no such method: transform at com.sun.script.javascript .RhinoScriptEngine.invoke(RhinoScriptEngine.java:286) at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:258) at org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:55) ) ... 10以上dataimport.DataImporter.runCmd(DataImporter.java:480) at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461) 原因: java.lang.NoSuchMethodException: no such method: transform at com .sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:286) at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:258) at org.apache.solr.handler.dataimport.ScriptTransformer.transformRow (ScriptTransformer.java:55) ... 10 件以上dataimport.DataImporter.runCmd(DataImporter.java:480) at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461) 原因: java.lang.NoSuchMethodException: no such method: transform at com .sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:286) at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:258) at org.apache.solr.handler.dataimport.ScriptTransformer.transformRow (ScriptTransformer.java:55) ... 10 件以上org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:55) での invokeFunction(RhinoScriptEngine.java:258) ... 10 詳細org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:55) での invokeFunction(RhinoScriptEngine.java:258) ... 10 詳細

トランスフォーマーを使用して追加しようとした余分なフィールドを除いて、すべてのフィールドがインデックス化されています。そして驚くべきことに、「catCount」という 1 つのフィールドだけがインデックス化されています。

あなたは私を信頼することができ、私はスキーマ定義とその他の構成に関して自信を持っています.

どんなリードも非常に高く評価されますか??

前もって感謝します :)

4

0 に答える 0