如何索引XML书籍?

时间:2014-10-22 04:14:04

标签: xml indexing lucene

我们有一组存储为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一起搜索。搜索结果将显示单词出现的标题。

  1. 索引此类内容的适当工具是什么?我遇到了Solr,Tika或Digester等几个名字,但他们做的事情对我来说并不清楚。
  2. 如果我们现在想要将搜索限制为某些元素类型(例如标题)怎么办?是否适用相同的工具?

2 个答案:

答案 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数据库附带了一些工具,允许您控制为内容的哪些部分构建哪种索引。