【问题标题】:match large String against a few hundred small phrases将大字符串与几百个小短语匹配
【发布时间】:2011-09-02 21:50:36
【问题描述】:

我需要将数千个大字符串与另一组数百个较小的短语和单词进行比较/匹配,以查看这些短语是否包含在大字符串中。

最快的方法是什么?我是只使用 String.indexOf(...) 还是 String.matches(regularExpression),还是下到字节级别等。

(所有匹配项必须不区分大小写;“HI”和“hi”短语都必须在字符串“Hi there”中找到。)

有什么建议吗?

编辑:“最快”是指性能方面。

【问题讨论】:

    标签: java string contains


    【解决方案1】:

    最快的方法是什么 这?我只是使用一个 String.indexOf(...),或 String.matches(regularExpression),或 我要降到字节级别等吗 等等

    如果你想要性能,绝对不是正则表达式。也不是字节级别:Java 使用 unicode,字节处理可能非常尴尬。 String.indexOf() 似乎很合理

    (所有匹配必须不区分大小写; "HI" 和 "hi" 短语都必须是 在字符串“Hi there”中找到。)

    我会通过将文本和搜索字符串都小写来实现这一点。 (一旦有了偏移量,您就可以从原始字符串中获取原始匹配文本)

    【讨论】:

      【解决方案2】:

      Trie/Prefix TreeRadix Tree 很可能是您要查找的内容。

      【讨论】:

        【解决方案3】:

        我可能会考虑使用 aho-corasick 或前缀树来完成此类任务。
        这个问题已经在这篇帖子Java: Matching Phrases in a String

        中提出过

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-08
          • 1970-01-01
          相关资源
          最近更新 更多