如何在非常大的XML文件中快速/索引搜索?

时间:2013-02-03 09:31:29

标签: java xml dom indexing

假设我有一个非常大的XML文件,其条目包含<id>个标签或id=""属性。

如何通过此ID进行搜索?我可以创建一些搜索索引吗。

目前我正在使用org.w3.dom。它有一些搜索方法吗?

更新

我的大型XML文件是下载的维基百科。它的大小为40G,有数百万条记录。

是否可以使用像Lucene之类的东西对其进行索引,然后快速搜索ID?

UPDATE2

尝试了BaseX。它吃了我的XML并创建了32Gb的数据库。不明白是否截断数据或32Gb是因为某些压缩。

不幸的是,按ID搜索需要70-80秒或更长时间。所以它比Mediawiki API查询更长。

1 个答案:

答案 0 :(得分:3)

因此,为了读写XML文件,您需要先解析数据。有不同类型的解析器,主要的解析器是DOM,SAX,StAX。

我不建议使用DOM解析器进行XML解析,尤其是在解析大型XML文件时。因为DOM解析器首先将所有内容读入您的内存,然后尝试从中读取数据。如果您的XML文件非常大,那么效率极低。 SAX和StAX解析器基本上是DOM的改进版本。从这里读取Java中的StAX解析器

StAX parser tutorial

我认为StAX解析器是最适合读取大型XML文件的解析器。

仅供参考,这里也是SAX解析器的链接

SAX parser tutorial in Java