2013-10-12 13 views
0

使用XPathEntityProcessor,我下面的XML文件(只是一個例子)索引:索引XML文件導入到Solr的使用XPathEntityProcessor - 無法索引某些標籤

<shop> 
<vegitable> 
.... 
</vegitable> 
<fruit> 
     <property> 
     <kind>apple</kind> 
     <value>3.08</value> 
     <from>USA</from> 
     </property> 
     <property> 
     <kind>banana</kind> 
     <value>8.5</value> 
     <from>CA</from> 
     </property> 
     <property> 
     <kind>painaple</kind> 
     <value>102.8</value> 
     <from>CA</from> 
     </property> 
</fruit> 
.... 
.... 
.... 
</shop> 

我希望店蘋果物業在一個領域,所有其他屬性放入另一個字段,以便我可以將其用於查看目的。 Bellow是我的solr-config.xml文件,但solr不處理這兩個字段。

<dataConfig> 
     <dataSource type="FileDataSource" encoding="UTF-8" /> 
     <document> 
     <entity name="drug" 
       processor="XPathEntityProcessor" 
       stream="true" 
       forEach="/shop/" 
       url="/data/shop.xml" 
       transformer="RegexTransformer,DateFormatTransformer" 
       > 
       .... 
       .... 
      <field column="apple-imported-form" xpath="/shop/fruit/property/[kind='apple']/from"/> 
      <field column="apple-imported-value" xpath="/shop/fruit/property/[kind='apple']/value"/> 
     </entity> 
     </document> 
</dataConfig> 

同時XPathEntityProcessor上solr的文檔讀取,我發現下列行:

的XPathEntityProcessor實現支持 XPath語法的子集的流解析器。完整的xpath語法不受支持,但大多數常見用例都包含在內。

但是從Xpath中沒有提到什麼事情沒有被覆蓋。請指導我。

在此先感謝!

+0

我看你有壞xml 沒有結束 Darka

+0

另外我不知道solr,但可能錯誤是因爲xpath不好。也許你可以把它改成/ shop/fruit/property [descendant :: kind ='apple'] /從 – Darka

+0

謝謝Darka對於你的輸入,請找到正確的xml,我也試過用你給定的語法,但它不起作用n solr ,我試圖將xml解析爲solr文檔,這看起來不太可能。 – user2551549

回答

0

我發現這個在文檔:https://wiki.apache.org/solr/DataImportHandler

的XPathEntityProcessor實現支持XPath語法的一個子集流解析器。完整的XPath語法不支持,但最常見的用例涵蓋如下:

xpath="https://stackoverflow.com/a/b/subject[@qualifier='fullTitle']" 
    xpath="https://stackoverflow.com/a/b/subject/@qualifier" 
    xpath="https://stackoverflow.com/a/b/c" 
    xpath="//a/..." 
    xpath="https://stackoverflow.com/a//b..." 

我也嘗試過使用XPath作爲之下,但沒有奏效。 (我的Solr版本是:5.2)

xpath="https://stackoverflow.com/a/b/subject[@qualifier='fullTitle']/id" 

看起來我們必須聲明限定符的最後一個。