我们有一组存储为XML文件的书籍。每个大小约为20 Mb。它们都具有相同的规则结构,大致如此:
<book>
<volume id="vI"><title>PRIMARY CARE MEDICINE</title>
<part id="vIpA"><title>General Issues and Approach to Disease in Primary Care Medicine</title>
<section id="vIpAs1"><title>Core Issues and Special Groups in Primary Care</title>
<chapter id="vIpAs1ca"><title>Core Issues in Primary Care</title>
<subchapter id="vIpAs1casc1"><title>Introduction</title>
<para>Praesent et venenatis ipsum.</para>
…
</subchapter>
</chapter>
<chapter id="vIpAs1cb"><title>Other Issues</title>
<para>Etiam maximus orci orci, eu aliquam nunc pretium id.</para>
…
</chapter>
</section>
…
</part>
…
</volume>
</book>
我们想让他们全文可以与Lucene一起搜索。搜索结果将显示单词出现的标题。
答案 0 :(得分:0)
要从XML文件中提取内容,您有几个选择。例如,Java编程语言运行了许多用于XML处理的库。这些库当然可以从Clojure,Scala或任何基于JVM的语言中使用 第二个选项就是你提到的Apache Tika Apache Solr的核心(顺便说一下ElasticSearch)是Apache Lucene。如果您使用的是Apache Lucene,那么Java API是您唯一的选择。但是,如果您想使用PHP,Python或Erlang,那该怎么办? 简单来说,Apache Solr(和ElasticSearch)提供的是Lucene API的HTTP接口(当然还有更多东西)。
如果我们现在想要将搜索限制为某些元素类型(例如标题)怎么办?是否适用相同的工具?
如果我们谈论的是Lucene,Solr或ElasticSearch,那么你当然可以。
答案 1 :(得分:0)
我认为将这些内容放在诸如MarkLogic或eXist-DB之类的XML数据库中是值得的。然后,您可以在整个集合中使用自由文本搜索和结构化XQuery搜索。 XML数据库附带了一些工具,允许您控制为内容的哪些部分构建哪种索引。