0

使用XPathEntityProcessor,我正在索引以下 xml 文件(只是一个示例):

<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>

在 solr上阅读有关XPathEntityProcessor的文档时,我发现以下几行:

XPathEntityProcessor 实现了一个支持 xpath 语法子集的流解析器。不支持完整的 xpath 语法,但涵盖了大多数常见用例。

但是没有提到 Xpath 未涵盖的内容。请指导我。

提前致谢!!

4

1 回答 1

0

我在文档中找到了这个:https ://wiki.apache.org/solr/DataImportHandler

XPathEntityProcessor 实现了一个支持 xpath 语法子集的流解析器。不支持完整的 xpath 语法,但大多数常见用例如下所示:

   xpath="/a/b/subject[@qualifier='fullTitle']"
   xpath="/a/b/subject/@qualifier"
   xpath="/a/b/c"
   xpath="//a/..."
   xpath="/a//b..."

我也尝试了如下的xpath,但它没有用。(我的 Solr 版本是:5.2)

   xpath="/a/b/subject[@qualifier='fullTitle']/id"

看来我们必须最后声明限定符。

于 2015-11-23T13:10:28.897 回答