【问题标题】:How do I find strings and string patterns in a set of many files?如何在一组多个文件中找到字符串和字符串模式?
【发布时间】:2011-09-23 16:12:42
【问题描述】:

我收集了大约 200 万个文本文件,未压缩的总大小约为 10GB。我想在这个集合中找到包含短语的文档,这些短语看起来像“每次”或“比尔克林顿”(简单的不区分大小写的字符串匹配)。我也想找内容模糊的词组;例如“数周”。

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

【问题讨论】:

  • 当然是 Lucene。也许你应该问“我怎么能用 Lucene 做这个和那个”
  • 关闭 Lucene 中的停用词处理?祝你好运。

标签: search text lucene grep


【解决方案1】:

您可能需要查看 ugrep 实用程序进行模糊搜索,它比 agrep 快得多:

ugrep -i -Z PATTERN ...

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多