【问题标题】:XML parser + Indexing dataXML 解析器 + 索引数据
【发布时间】:2011-06-20 12:18:08
【问题描述】:

我需要用 Lucene 索引一些 xml 文档,但在此之前,我需要解析这些 XML 并在它们的标签中提取一些信息。

XML 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="es" xmlns="http://www.w3.org/2006/04/ttaf1"  xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
  <head>
        <styling>
            <style id="bl" tts:fontWeight="bold" tts:color="#FFFFFF" tts:fontSize="15" tts:fontFamily="sansSerif"/>
       </styling>
  </head>

  <body>
    <div xml:lang="es">
            <p begin="00:00.50" end="00:04.02" style="bl">Info</p>
            <p begin="00:04.32" end="00:07.68" style="bl">Different words,<br />and phrases to index</p>
            <p begin="00:11.76" end="00:16.04" style="bl">Text</p>
            <p begin="00:18.52" end="00:22.88" style="bl">More and<br />more text</p>
   </div>
  </body>
</tt>

我只需要提取标签开始和结束内的时间戳,然后索引 p 标签内的文本。目标是查询被索引的文本并知道每次命中的时间戳间隔。

例如,如果我查询“Text”这个词,输出应该是这样的:“2 hits, 00:11.76-00:16.04, 00:18.52-00:22.88”

我开始使用 Lucene 索引整个 XML。现在我想解析文件,但我不确定解决这个问题的最佳近似值是什么。

欢迎任何帮助或建议 :) 谢谢大家!

【问题讨论】:

    标签: java lucene xml-parsing apache-tika apache-commons-digester


    【解决方案1】:

    我使用SAX library(即 org.xml.sax.helpers.DefaultHandler 的子类)来解析 XML 文件,从每个 XML 文档中提取所需的信息到我自己的 Document 类中,然后索引该 Document 实例. (间接是由于必须单独解析多个文档格式,但在同一索引中编制索引。)在您的情况下,如果每个

    元素的内容代表一个逻辑文档,您可以存储日期作为与特定令牌相关联的有效负载的信息。将 XML 解析到

    级别,枚举段落实例,并为每个实例添加一个具有相同名称的新 Field 实例,其中值是文本,有效负载是日期信息,适当表示。 (有效负载是二进制的,因此,例如,您可以存储与开始时间和结束时间相对应的两个长值。)当您将多个同名的字段实例添加到文档时,它们会被索引为相同的字段,但是您可以为每个实例分配不同的payload,可以调整文本开头的位置等

    如果您不需要将每个元素的内容作为单个文档,则可以将每个

    视为单独的文档,然后在其上设置有效负载。或者,您可以将日期存储为单独的字段。

    【讨论】:

    • 我研究了一些解析器库,我想我会使用 SAX,因为我需要解析所有的

      标签,但是每个标签的属性都有不同的值。如果我发现问题我会回来的:D

    【解决方案2】:

    我强烈建议您将所有 XML 存储在 eXist 数据库中,该数据库具有 Lucene built-in。我已经使用这个组合几个月了,它很容易解决了很多搜索和检索问题。

    【讨论】:

    • 我一直在寻找 eXist 数据库,似乎是一个非常好的工具,但我现在需要做的事情根本不适合这个数据库。无论如何,谢谢你的信息:D
    猜你喜欢
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多