0

关于 SOLR 作为全文搜索引擎,我正在寻找有关它对 XML 文档的支持的文档。[1] 它在 XPath 中是否有任何支持(从使用 XPath 概念询问“字段”的角度来看)?[2] 是否支持 XQuery 查询?[3] 它有层次结构支持吗?例如,假设我得到以下 XML

<A>
  <B>kdflsdk</B>
  <C>
    <B>222</B>
  </C>
</A>

有没有一种方法可以查询 C 标签内的 222,或者查询 B 元素范围内的 kdflsdk?

4

2 回答 2

1

我正在寻找有关它对 XML 文档的支持的文档。

您最好使用XsltUpdateRequestHandler[1] 来处理任意 XML 文档,并使用DIH XPathEntityProcessor[2] 来批量索引 XML 文档。这两种技术都有很好的文档记录——对于初学者来说,wiki 页面应该足以满足您的即时需求。

它在 XPath 中是否有任何支持(从使用 XPath 概念询问“字段”的角度来看)?它对 XQuery 查询有任何支持吗?

您可能想深入了解 Solr 索引如何工作的基础知识 [3]...但基本上,当您将文档摄取到 Solr 索引时,您是在使其可被 Solr 搜索;这就是 Solr 具有特定摄取格式的原因 [4]。一旦你索引它们,就忘记你的源文件的结构。

它有层次结构支持吗?例如,假设我得到以下 XML

Solr 隐含地为您处理这个问题;索引数据时考虑“Solr”——一旦索引数据,就使用 Solr API 发出查询。

有没有一种方法可以查询 C 标签内的 222,或者查询 B 元素范围内的 kdflsdk?

这里需要注意几点:
1. 在将 XML 文件格式提取到 Solr 索引期间,您将 XML 文件格式展平
2. Solr 接受 HTTP 请求,因此您可能会重命名/A/B/C/B为其他名称,因为您已经有一个二级 B 标记,然后发出一个类似于下面的 HTTP 请求,用于获取“kdflsdk”的第三级 B 标记的值....

http://localhost:8983/solr/select?q=B:kdflsdk&fl=CB

您必须阅读此 [5] 以了解如何查询 Solr。

[1] http://wiki.apache.org/solr/XsltUpdateRequestHandler
[2] http://wiki.apache.org/solr/DataImportHandler#XPathEntityProcessor
[3] http://www.solrtutorial.com/solr-in -5-minutes.html
[4] http://wiki.apache.org/solr/UpdateXmlMessages
[5] http://wiki.apache.org/solr/SolrQuerySyntax

于 2013-01-01T17:22:39.660 回答
0

You can index the data using DIH for XML and use Solr to search over the fields.

于 2012-12-31T10:52:31.727 回答