什么是一个好的Java库用于搜索几个文件以获取搜索项列表?

时间:2011-02-11 14:22:26

标签: java search lucene full-text-search search-engine

基本上,我想要做的是在文件夹中搜索其子文件夹以获取搜索字词列表。它不必高度优化或类似的东西。我希望图书馆能够“匹配案例”,匹配“仅限整个词”等。

我想我可以写这样的东西,在文件中打开每个文件,搜索每个单词等,但我真的想要一个捷径。是否有一些图书馆已经完成了大部分工作?

我的梦想代码如下:

ArrayList occurrences = SomeLibrary.parse("directoryPath","searchTerm");

有没有接近这个高水平的东西?

谢谢, GRAE

4 个答案:

答案 0 :(得分:4)

我不建议使用Lucene(或Solr)来满足这些要求。

  1. 首先,不需要功能齐全的 text 搜索库(简单地说)可以使用所有语言知识进行各种魔术搜索词干,语法和语法技巧。

  2. 虽然Lucene是一个强大的功能,但您无法使用具有开箱即用功能的Lucene 所有 。例如,将其配置为使用“ apple ”术语查找 apples 相对容易。好的。但是使用相同的配置,它不会在“ 12345 ”字符串中找到“ 123 ”。并忘记应用程序日志等“不可读”的文本。 Lucene是一个像谷歌一样的引擎,它通过人类可读的正确的文本搜索人类的文本。要解决所有类型的“基本”字符串匹配,您需要编写一个与Lucene功能集成的自定义处理代码,并且它不再简单。

  3. 使用Java,编写 BufferedReader 扫描程序会更加简单快捷,recursively处理文件和文件夹,并使用 {搜索完全匹配或部分匹配{3}} String.match 操作。

答案 1 :(得分:3)

你考虑过使用Lucene吗?它可以根据需要索引和搜索文本文件中的搜索词。将它集成到您​​的应用程序中并不困难,但不像“ArrayList occurrences = SomeLibrary.parse(”directoryPath“,”searchTerm“)那么简单;” :)我认为你不会找到一个简单的解决方案。

如果您使用Lucene,搜索的效果也会很好。

你可以更进一步使用Solr(也是一个Apache产品),但这可能对你来说太过分了。

如果您决定调查Lucene,那么this可能对您有所帮助。

答案 2 :(得分:2)

我推荐Apache Solr。易于配置,可以索引数百万个文档。 Solr在索引和查询中进行所有可能的优化。很多文档。更好的是,是开放的。

答案 3 :(得分:1)

Grae,它是这样的:

  • Lucene是一个原生Java搜索库。它的学习曲线有点陡峭。
  • Solr是使用Lucene作为Web应用程序构建的搜索引擎。它更容易学习,可以通过HTTP接口或称为Solrj的Java接口使用。

如果您更喜欢最小的Java版本,则需要Lucene。如果您想要最快的实施解决方案,请使用Solr。这是Solr tutorialLucene tutorial

这两种方法都需要索引阶段和后续检索阶段。你的问题似乎有更像grep的味道,但我不知道匹配的Java库。您也没有描述文件类型 - 裸Lucene使用原始文本。您可能需要Apache Tika才能从文件中获取文本和元数据。