如何在一组许多文件中找到字符串和字符串模式?

时间:2011-09-23 16:12:43

标签: search text lucene grep

我有大约200万个文本文件的集合,总共大约10GB未压缩。我想在这个集合中找到包含短语的文档,看起来像“每次”或“bill clinton”(简单的不区分大小写的字符串匹配)。我还想找到模糊内容的短语;例如“数周”。

我已尝试使用Lucene进行索引,但它并不擅长查找包含停用词的短语,因为这些短语默认情况下会在索引时删除。 xargs和grep是一个缓慢的解决方案。什么是快速和适合这个数据量?

2 个答案:

答案 0 :(得分:1)

您可能想查看用于模糊搜索的ugrep实用程序,它比agrep快得多:

ugrep -i -Z PATTERN ...

这将运行多个线程(通常为8个或更多)以同时搜索文件。选项-i用于不区分大小写的搜索,而-Z指定模糊搜索。例如,您可以使用-Z3将模糊性从1增加到3,以允许最多3个错误(最大编辑距离3),或者仅允许最多3次插入(额外字符),例如-Z+3。默认情况下支持Unicode正则表达式匹配。例如for模糊匹配für(即一次替换)。

答案 1 :(得分:0)

您可以使用postgreSQL数据库。有全文搜索实现,通过使用词典,您可以定义自己的停用词。我不知道它有多大帮助,但我会尝试一下。