Solr 解决方案:FileListenticProcessor正在多次执行子实体
我已经配置了一个dih-import.xml,如下所示。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"?>
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。也许已经修好了。