Java XML解析器+;索引数据

Java XML解析器+;索引数据,java,lucene,xml-parsing,apache-tika,apache-commons-digester,Java,Lucene,Xml Parsing,Apache Tika,Apache Commons Digester,我需要用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> &

我需要用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>

信息

要索引的不同单词、
和短语

文本

越来越多的文本

我只需要提取标记begin和end中的时间戳,然后索引p标记中的文本。目标是查询索引的文本,并知道每次命中的时间戳间隔

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

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

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

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

我强烈建议将您的所有XML存储在一个数据库中,这个数据库已经有了。我已经使用这个组合几个月了,它非常容易地解决了许多搜索和检索问题。

我使用(即org.xml.sax.helpers.DefaultHandler的子类)解析xml文件,将每个xml文档中所需的信息提取到我自己的文档类中,然后为该文档实例编制索引。(间接寻址是因为有多个文档格式必须单独解析,但在同一索引中索引。)在您的情况下,如果每个元素的内容表示逻辑文档,则可以将日期信息存储为与特定令牌关联的有效负载。将XML解析到级别,枚举段落实例,并为每个实例添加一个具有相同名称的新字段实例,其中值是文本,负载是日期信息,并适当表示。(有效载荷是二进制的,因此,例如,您可以存储与开始时间和结束时间相对应的两个长值。)当您向文档添加具有相同名称的多个字段实例时,它们将作为同一字段进行索引,但您可以为每个实例分配不同的有效载荷,您可以调整文本开始的位置,等等

如果不需要将每个元素的内容作为单个文档,可以将每个作为单独的文档处理,然后在此基础上设置有效负载。或者,您可以将日期存储为单独的字段。

我使用(即org.xml.sax.helpers.DefaultHandler的子类)解析xml文件,将每个xml文档中所需的信息提取到我自己的文档类中,然后为该文档实例编制索引。(间接寻址是因为有多个文档格式必须单独解析,但在同一索引中索引。)在您的情况下,如果每个元素的内容表示逻辑文档,则可以将日期信息存储为与特定令牌关联的有效负载。将XML解析到级别,枚举段落实例,并为每个实例添加一个具有相同名称的新字段实例,其中值是文本,负载是日期信息,并适当表示。(有效载荷是二进制的,因此,例如,您可以存储与开始时间和结束时间相对应的两个长值。)当您向文档添加具有相同名称的多个字段实例时,它们将作为同一字段进行索引,但您可以为每个实例分配不同的有效载荷,您可以调整文本开始的位置,等等


如果不需要将每个元素的内容作为单个文档,可以将每个作为单独的文档处理,然后在此基础上设置有效负载。或者,您可以将日期存储为单独的字段。

我一直在查找eXist数据库,这似乎是一个非常好的工具,但我现在需要做的事情根本不适合此数据库。无论如何,thanx的信息:我一直在寻找eXist数据库,这似乎是一个非常好的工具,但我现在需要做的事情根本不适合这个数据库。无论如何,thanx for the info:DI研究了一些解析器库,我想我将使用SAX,因为我需要解析所有标记,但这些标记的属性中都有不同的值。如果我发现问题,我会回来的:我研究了一些解析器库,我想我将使用SAX,因为我需要解析所有标记,但这些标记的属性中都有不同的值。如果我发现问题,我会回来的:D