2012-02-01 84 views
2

我是Solr的新手。我成功地通過DIH從我的sql數據庫索引數據。現在我想導入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文件是這樣的: <名稱的className = 「java.lang.String中」>軸頸 <值的className = 「java.lang.String中」>有機化學雜誌 的。雖然表達式正確,當我改變它只''名稱'DIH索引文件,但那不是我想要的。 //名稱[text()='journal']不會工作:(我只是不明白爲什麼! – Mel 2012-02-03 15:06:39

0

我最近在嘗試相同的事情時遇到了同樣的問題;即使用FileListEntityProcessor(讀取多個本地.xml文件)和XPathEntityProcessor(以獲取某些XML元素)。

根本原因:在這一行:

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

說明:爲XPath的屬性參數( 「//名稱...」),而有效的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()" /> 
相關問題