2012-02-01 2 views
2

Я очень новичок в Solr. Мне удалось индексировать данные из моей базы данных sql через DIH. Теперь я хочу импортировать xml-файлы и индексировать их также через DIH, но это просто не сработает! Мои данные-config.xml выглядит следующим образом:Solr DataImportHandler не работает с файлами XML

<dataConfig> 
    <dataSource type="FileDataSource" encoding="UTF-8" /> 
    <document> 
    <entity name="dir" 
      processor="FileListEntityProcessor" 
      baseDir="/bla/test2" 
      fileName=".*xml" 
      stream="true" 
      recursive="false"  
      rootEntity="false"> 
      <entity name="PubmedArticle" 
        processor="XPathEntityProcessor" 
        transformer="RegexTransformer" 
        stream="true" 
        forEach="/PubmedArticle" 
        url="${dir.fileAbsolutePath}"> 


       <field column="journal" xpath="//Name[.='journal']/following-sibling::Value/text()" /> 
       <field column="authors" xpath="//Name[.='authors']/following-sibling::Value/text()" /> 

      ..etc 

И у меня есть следующие поля в schema.xml:

<field name="journal" type="text" indexed="true" stored="true" required="true" /> <field name="authors" type="text" indexed="true" stored="true" required="true" />

Когда я запустить Solr я не получаю ошибки и индекс не индексируется:

<str name="Total **Rows Fetched**">**2000**</str> 
<str name="Total **Documents Skipped**">**0**</str> 
<str name="Full Dump Started">2012-02-01 14:59:17</str> 
<str name="">Indexing completed. **Added/Updated: 0 documents.** Deleted 0 documents. 

Can кто-нибудь скажет мне, что я сделал неправильно? Я даже дважды проверил путь синтаксис ...

ответ

0

Я предлагаю обзор ответы на аналогичный вопрос:

Need help indexing XML files into Solr using DataImportHandler

Использование языка сценариев, как Groovy намного менее сложным и легче контрольная работа.

+0

Ну я не знаком с заводной, хотя, пример выглядит просто, но я до сих пор дон Даже не знаю, что делать с этим скриптом! Однако я обнаружил, что он действительно имеет какое-то отношение к выражению xpath. Файлы Xml выглядеть следующим образом: Журнал Журнал органической химии .Although выражения является правильным , когда я изменяю его только на документ индексов «// Name» DIH, но это не то, что я хочу. // Имя [text() = 'journal'] тоже не работает :(Я просто не понимаю, почему! – Mel

0

Недавно я столкнулся с той же проблемой при попытке сделать то же самое; то есть при использовании FileListEntityProcessor (для чтения нескольких локальных файлов .xml) и XPathEntityProcessor (для захвата определенных элементов XML).

Первопричины: в этой строке:

<field column="journal" xpath="//Name[.='journal']/following-sibling::Value/text()" /> 

Объяснение: аргумент для атрибута XPATH ("// Name ..."), в то время как допустимый синтаксис XPath, не поддерживается по Solr. В «Справочном руководстве Apache Solr 4.4» просто сказано: Выражение XPath, которое будет извлекать содержимое из записи для этого поля. Поддерживается только подмножество синтаксиса Xpath.

Решение: Измените аргумент для XPath, чтобы быть полный путь от корня документа:

<field column="journal" xpath="/full/path/from/root/of/document/Name[.='journal']/following-sibling::Value/text()" /> 
Смежные вопросы