关于 SOLR 作为全文搜索引擎,我正在寻找有关它对 XML 文档的支持的文档。[1] 它在 XPath 中是否有任何支持(从使用 XPath 概念询问“字段”的角度来看)?[2] 是否支持 XQuery 查询?[3] 它有层次结构支持吗?例如,假设我得到以下 XML
<A>
<B>kdflsdk</B>
<C>
<B>222</B>
</C>
</A>
有没有一种方法可以查询 C 标签内的 222,或者查询 B 元素范围内的 kdflsdk?
关于 SOLR 作为全文搜索引擎,我正在寻找有关它对 XML 文档的支持的文档。[1] 它在 XPath 中是否有任何支持(从使用 XPath 概念询问“字段”的角度来看)?[2] 是否支持 XQuery 查询?[3] 它有层次结构支持吗?例如,假设我得到以下 XML
<A>
<B>kdflsdk</B>
<C>
<B>222</B>
</C>
</A>
有没有一种方法可以查询 C 标签内的 222,或者查询 B 元素范围内的 kdflsdk?
我正在寻找有关它对 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
You can index the data using DIH for XML and use Solr to search over the fields.