Я настроил 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>
EDIT нашел проблему в Google, но и там нет ответа: http://osdir.com/ml/solr-user.lucene.apache.org/2010-04/msg00138.html
и еще одно изменение
обновил solr с 3.6 до 4.1 и выполнил импортер. Проблема все еще существует, только в том, что больше нет 2n (2, 4, 6, 8, ..) вызовов для подсущностей, а только n.
id
,A
иB
, которые работают должным образом, просто не в нужное время и с большой нагрузкой на БД. - person harpax   schedule 07.03.2013