Solr:FileListEntityProcessor多次执行子实体

时间:2013-03-01 18:10:30

标签: solr dataimporthandler dih

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

当我执行〜30.000文件的完全导入时,导入花了将近3个小时。回到DIH-debug控制台,它告诉我,对于第一个发现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>

修改 在谷歌发现了这个问题,但没有回答:http://osdir.com/ml/solr-user.lucene.apache.org/2010-04/msg00138.html


和其他编辑

将solr从3.6更新为4.1并执行导入程序。问题仍然存在,只是对子实体没有2n(2,4,6,8,..)调用,只有n。

1 个答案:

答案 0 :(得分:1)

如果主要问题是使用JdbcDataSource时数据库上的命中数,您可以尝试切换到CachedSqlEntityProcessor

您可能还想跟踪SOLR-2943,因为他们想要准确解决您的问题,希望即将推出的Solr 4.2