基本上,我想要做的是在文件夹中搜索其子文件夹以获取搜索字词列表。它不必高度优化或类似的东西。我希望图书馆能够“匹配案例”,匹配“仅限整个词”等。
我想我可以写这样的东西,在文件中打开每个文件,搜索每个单词等,但我真的想要一个捷径。是否有一些图书馆已经完成了大部分工作?
我的梦想代码如下:
ArrayList occurrences = SomeLibrary.parse("directoryPath","searchTerm");
有没有接近这个高水平的东西?
谢谢, GRAE
答案 0 :(得分:4)
我不建议使用Lucene(或Solr)来满足这些要求。
首先,不需要功能齐全的 text 搜索库(简单地说)可以使用所有语言知识进行各种魔术搜索词干,语法和语法技巧。
虽然Lucene是一个强大的功能,但您无法使用具有开箱即用功能的Lucene 所有 。例如,将其配置为使用“ apple ”术语查找 apples 相对容易。好的。但是使用相同的配置,它不会在“ 12345 ”字符串中找到“ 123 ”。并忘记应用程序日志等“不可读”的文本。 Lucene是一个像谷歌一样的引擎,它通过人类可读的正确的文本搜索人类的文本。要解决所有类型的“基本”字符串匹配,您需要编写一个与Lucene功能集成的自定义处理代码,并且它不再简单。
使用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,它是这样的:
如果您更喜欢最小的Java版本,则需要Lucene。如果您想要最快的实施解决方案,请使用Solr。这是Solr tutorial和Lucene tutorial。
这两种方法都需要索引阶段和后续检索阶段。你的问题似乎有更像grep的味道,但我不知道匹配的Java库。您也没有描述文件类型 - 裸Lucene使用原始文本。您可能需要Apache Tika才能从文件中获取文本和元数据。