java - 如何在 Web 应用程序中高效地搜索大型 XML 文件?

标签 java xml sax

我有一个 XML 文档,我需要使其可通过网络应用程序进行搜索。该文档目前只有 6mb..但可能非常大,因此根据我的研究,SAX 似乎是最佳选择。

所以我的问题是,给定搜索词我应该:

  1. 我是否将文档加载到内存中一次(加载到 bean 列表中,然后 将其存储在内存中)?然后在需要的时候搜索它? 或

  2. 解析文档以查找所需的搜索词并仅添加 与 beans 列表匹配吗?并对每个重复此过程 搜索?

我对 Web 应用程序没有那么丰富的经验,但我正在尝试找出解决此问题的最佳方法,有使用 Tomcat、SAX 和 Java Web 应用程序的人对哪一个最佳方案有任何建议吗?

问候, 内特

最佳答案

当您说您的 XML 文件可能非常大时,我假设您不想将其保留在内存中。如果您希望它可搜索,我理解您需要索引访问,而不是每次都完整读取。恕我直言,实现这一目标的唯一方法是解析文件并将数据加载到轻量级文件数据库(Derby、HSQL 或 H2)中,并向数据库添加相关索引。数据库确实允许对内存外数据进行索引搜索,但 XML 文件则不允许。

关于java - 如何在 Web 应用程序中高效地搜索大型 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25590205/

相关文章:

java - 至少等待 Java 执行器的一个结果而不忙等待

java - 使用 AspectJ 模拟接口(interface)和方法的注解继承

更改节点 libxml2 的命名空间

xml - 有人知道 Wiktionary XML 文件结构吗?

java - Sax:XMLReader:将 CSV 流式传输并转换为 Xml,同时验证结果

java - Android XML 解析器显示重复数据

Java的URL无法正确解析字符串

java - JSP和Servlet生命周期方法

xml - Pyspark:hdfs 中没有这样的文件或目录

java - SAXBuilder().build(InputStream) - 这会将整个文件读入内存吗?