我有大约200万个文本文件的集合,总共大约10GB未压缩。我想在这个集合中找到包含短语的文档,看起来像“每次”或“bill clinton”(简单的不区分大小写的字符串匹配)。我还想找到模糊内容的短语;例如“数周”。
我已尝试使用Lucene进行索引,但它并不擅长查找包含停用词的短语,因为这些短语默认情况下会在索引时删除。 xargs和grep是一个缓慢的解决方案。什么是快速和适合这个数据量?
答案 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数据库。有全文搜索实现,通过使用词典,您可以定义自己的停用词。我不知道它有多大帮助,但我会尝试一下。