【问题标题】:Java: Does anyone have method to find best match of string in array?Java:有没有人有办法在数组中找到字符串的最佳匹配?
【发布时间】:2012-06-05 07:18:00
【问题描述】:

基本上,我只是想找到一种方法来找到与String 最接近的匹配项(不一定完全匹配)

例如,在{"pie", "delicious", "test"}中找到"delicous"

这很明显,但数组中的值可能并不总是那么不同。

有人可以帮助我实现这一目标吗?

【问题讨论】:

    标签: java pattern-matching matching string-matching


    【解决方案1】:

    取决于您如何定义“最接近”,但一种常见的方法是使用Levenshtein Distance 分数。 Apache Commons 有这样的a method in StringUtils

    从那里你的搜索方法基本上变成:在集合中找到对于给定输入具有最小 Levenshtein 距离的字符串。

    【讨论】:

    • 谢谢,这很好用 :) 如果我有巧克力甜点和巧克力派,然后我输入巧克力,它似乎仍然适合派,但它仍然比以前好得多:p 非常感谢!跨度>
    • 第二个链接坏了。请更新。 (这可能是链接 - commons.apache.org/proper/commons-lang/apidocs/org/apache/…
    【解决方案2】:

    Java 没有为此内置任何东西。你可以试试像SecondStringFREJ 这样的第三方库。

    【讨论】:

      【解决方案3】:

      另一种可以与 Levenshtein Distance 结合使用的方法是首先获取单词的语音表示。一种算法是Metaphone

      user guide for Apache Commons Codec 包含此编码器和其他一些编码器的详细信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-05
        • 2021-06-10
        • 2021-09-20
        • 2013-06-18
        • 1970-01-01
        • 1970-01-01
        • 2019-11-13
        • 1970-01-01
        相关资源
        最近更新 更多