【问题标题】:Indexing xml file into solr using XPathEntityProcessor - unable to index some tags使用 XPathEntityProcessor 将 xml 文件索引到 solr - 无法索引某些标签
【发布时间】:2013-10-12 12:25:12
【问题描述】:

使用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 未涵盖的内容。请指导我。

提前致谢!!

【问题讨论】:

  • 我看到你的 xml 不好 没有结尾
  • 我也不知道 solr 但可能错误是因为 xpath 错误。也许你可以把它改成 /shop/fruit/property[descendant::kind='apple']/from
  • 感谢 Darka 的输入,请找到更正的 xml,我也尝试使用您给定的语法,但它无法正常工作 n solr,我正在尝试将 xml 解析为 solr 文档,这看起来很不可能。
  • 如果你只是尝试如果它有效 /shop/fruit/property/kind 和 /shop/fruit/property/from 怎么办

标签: xml xpath solr dataimporthandler


【解决方案1】:

我在文档中找到了这个: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"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多