Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Solr自定义变压器不工作?_Java_Solr_Solr5 - Fatal编程技术网

Java Solr自定义变压器不工作?

Java Solr自定义变压器不工作?,java,solr,solr5,Java,Solr,Solr5,在使用数据导入处理程序编制索引时,我尝试向solr索引添加几个字段 下面是我的data-config.xml <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db" user="*****" password="*********"/> <script&

在使用数据导入处理程序编制索引时,我尝试向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.dataimporthandlexception:调用实体mergedPdt处理文档的脚本时出错#10000 位于org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(dataimporthandlexception.java:70) 位于org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:59) 位于org.apache.solr.handler.dataimport.EntityProcessorWrapper.applyTransformer(EntityProcessorWrapper.java:198) 位于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.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:414) 位于org.apache.solr.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) 原因:java.lang.NoSuchMethodException:没有这样的方法:transform 位于com.sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:286) 位于com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:258) 位于org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:55) ... 10多

所有字段都被索引,不包括我尝试使用transformer添加的额外字段。 令人惊讶的是,只有一个字段“catCount”被编入索引

您可以信任我,我对模式定义和其他配置很有信心

任何潜在客户都将受到高度重视


提前感谢:)

您是否尝试只使用一个脚本块?我还认为您可能希望脚本块位于dataConfig内部,而不是dataSource。@MatsLindh是的,我试过了。我认为脚本位于dataConfig内部,只是因为数据源刚好在它上面结束。您试过只使用一个脚本块吗?我还认为您可能希望脚本块位于dataConfig内部,而不是dataSource。@MatsLindh是的,我试过了。我认为脚本位于dataConfig内部,只是因为dataSource刚好在它上面结束。