Java 快速全文搜索位于文件系统上的XML文件。选择什么策略?

Java 快速全文搜索位于文件系统上的XML文件。选择什么策略?,java,xml,search,indexing,Java,Xml,Search,Indexing,我需要在文件系统中的XML文件上实现尽可能快的全文搜索。基本上,我需要确定一些XML节点值是否包含特定的关键字。 我考虑了几个选择: 遍历目录中的文件->逐行读取文件->使用Matcher/Pattern确定关键字是否在这里 遍历目录->使用SAX解析器中的文件 一旦新文件到达目录(例如,使用Solr),就在所需的XML节点上创建索引,然后使用查询索引引擎 选择哪种策略更好?为什么?如果xml文件很小(几KBs/几MBs),那么我建议您应该逐行读取它们(或者使用其他xml解析技术读取它们)。

我需要在文件系统中的XML文件上实现尽可能快的全文搜索。基本上,我需要确定一些XML节点值是否包含特定的关键字。 我考虑了几个选择:

  • 遍历目录中的文件->逐行读取文件->使用Matcher/Pattern确定关键字是否在这里
  • 遍历目录->使用SAX解析器中的文件
  • 一旦新文件到达目录(例如,使用Solr),就在所需的XML节点上创建索引,然后使用查询索引引擎

选择哪种策略更好?为什么?

如果xml文件很小(几KBs/几MBs),那么我建议您应该逐行读取它们(或者使用其他xml解析技术读取它们)。当您有一个非常大的xml文件时,Solr将被证明是有用的。Solr也可以轻松地读取小文件(不过,这完全取决于您有多少时间)


不确定SAX解析器

文件很小,但是有很多(数十万),新文件大量出现。我想solr在这种情况下可能是合适的(不确定上面的SAX解析器)。我假设您也将维护历史数据?但请记住,solr根据您的模式和提交的文档数量为所有文档编制索引需要时间。或者,您也可以查看powershell对文档进行快速搜索(不确定性能)。