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
Solr 解决方案:FileListenticProcessor正在多次执行子实体_Solr_Dataimporthandler_Dih - Fatal编程技术网

Solr 解决方案:FileListenticProcessor正在多次执行子实体

Solr 解决方案:FileListenticProcessor正在多次执行子实体,solr,dataimporthandler,dih,Solr,Dataimporthandler,Dih,我已经配置了一个dih-import.xml,如下所示。FileListEntityProcessor遍历一些文件夹,然后为每个文件执行一个XPathEntity和一个DB实体 当我对大约30000个文件执行完全导入时,导入过程花费了将近3个小时。回到DIH调试控制台,它告诉我,对于找到的第一个文件,进行了2个db调用,第二个是4,然后是6,8 谷歌在这个问题上没有向我展示任何东西,所以我希望你:) 提前谢谢 <?xml version="1.0" encoding="UTF-8"?>

我已经配置了一个dih-import.xml,如下所示。
FileListEntityProcessor
遍历一些文件夹,然后为每个文件执行一个XPathEntity和一个DB实体

当我对大约30000个文件执行完全导入时,导入过程花费了将近3个小时。回到DIH调试控制台,它告诉我,对于找到的第一个文件,进行了2个db调用,第二个是4,然后是6,8

谷歌在这个问题上没有向我展示任何东西,所以我希望你:)

提前谢谢

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource 
        name="cr-db"
        jndiName="xyz"
        type="JdbcDataSource" />
    <dataSource 
        name="cr-xml" 
        type="FileDataSource" 
        encoding="utf-8" />


    <document name="doc">
        <entity 
            dataSource="cr-xml" 
            name="f" 
            processor="FileListEntityProcessor" 
            baseDir="/path/to/xml" 
            filename="*.xml" 
            recursive="true" 
            rootEntity="true" 
            onError="skip">
            <entity
                name="xml-data" 
                dataSource="cr-xml" 
                processor="XPathEntityProcessor" 
                forEach="/root" 
                url="${f.fileAbsolutePath}" 
                transformer="DateFormatTransformer" 
                onError="skip">
                <field column="id" xpath="/root/id" /> 

                <field column="A" xpath="/root/a" />
            </entity>

            <entity 
                name="db-data" 
                dataSource="cr-db"
                query="
                    SELECT  
                        id, b
                    FROM 
                        a_table
                    WHERE 
                        id = '${f.file}'">
                <field column="B" name="b" />
            </entity>
        </entity>
    </document>
</dataConfig>


编辑 在谷歌发现了问题,但也没有答案:


和另一次编辑


将solr从3.6更新至4.1,并由进口商执行。问题仍然存在,只是不再有2n(2,4,6,8,…)次实体调用,而只有n次。如果主要问题是使用JdbcDataSource时数据库的点击次数,您可以尝试切换到


您可能还希望跟踪,因为他们希望准确地解决您的问题,希望在即将到来的Solr 4.2中进行澄清?您正在尝试为每个文件创建一个Solr文档吗?这意味着其中只有一个/根条目?对吗?对。单个Solr文档应包含
id
A
B
,这些文档按预期工作,只是不在适当的时间,而且会在数据库中加载很多内容感谢您的回答。与我在这里看到的相似:。然而,这并不是解决方案,因为每个文件都有1个db条目(1:1),所以没有可以缓存的内容。一个处理器(我相信是它的FileListenty)只是做了太多的调用:(n*(n+1))/2同样的情况也发生在被xpathed的文件上。顺便说一句,它们被调用了n次,其中n是FileListenityProcessor的返回集中的位置。我注意到您在外部和内部实体中都使用了cr xml数据源。如果你有两个不同的数据源,你能检查一下会发生什么吗。数据源可能在内部实体中重新初始化,并以某种方式中断外部实体循环。只需将数据源定义加倍,并为它们指定不同的名称。我尝试过,但不幸的是结果相同。。我现在要发一篇帖子,尽管我真的很想用DIH再次感谢刚刚发布的4.2。也许已经修好了。