【发布时间】:2013-02-03 09:31:28
【问题描述】:
假设我有一个非常大的 XML 文件,其中的条目具有 <id> 标记或 id="" 属性。
如何通过这个 id 进行搜索?我可以创建一些搜索索引什么的吗?
目前我正在使用org.w3.dom。它有一些搜索方式吗?
更新
我的大 XML 文件是一个下载的 Wikipedia。它是 40G 大小,拥有数百万条记录。
是否可以用 Lucene 之类的东西对其进行索引,然后快速搜索 ID?
更新2
已尝试BaseX。它吃掉了我的 XML 并创建了 32Gb 的数据库。不知道它是否截断了数据或 32Gb 是因为一些压缩。
很遗憾,按 ID 搜索需要 70-80 秒或更长时间。所以它比 Mediawiki API 查询要长。
【问题讨论】:
-
如果您可以在您的 XML 上使用 DOM,它有多大?通常它比内存中的 DOM 对象大 10 倍。如果你有一个 DOM,你可以构建一个
Map<String, DOMEntry> -
我还没有开始使用大 XML。我正在使用带有小型 XML 的 DOM。大的是一个下载的维基百科,它有数百万页和 40G 大小。我需要索引一次,然后使用索引。
-
在这种情况下,您需要解析所有文档并存储 id 以及可以在 Map 或数据库中找到它们的位置,或者根据您的喜好在两者中找到它们。我会使用 SAX 解析器,因为它可能更有效。
-
这意味着将 XML 转换为数据库。那么最好不要下载 XML 而是下载数据库。我想先找到一种使用 XML 的方法。难道没有一些方法可以索引 XML 吗???