基本上我只是想找到一種方法找到的String
Java:有沒有人有方法來找到數組中的字符串的最佳匹配?
例如最接近的匹配(不一定是精確的),找到"delicous"
在{"pie", "delicious", "test"}
這是很明顯的,但在價值觀數組可能並不總是那麼明顯。
有人可以幫助我一種方法來實現這一點。
基本上我只是想找到一種方法找到的String
Java:有沒有人有方法來找到數組中的字符串的最佳匹配?
例如最接近的匹配(不一定是精確的),找到"delicous"
在{"pie", "delicious", "test"}
這是很明顯的,但在價值觀數組可能並不總是那麼明顯。
有人可以幫助我一種方法來實現這一點。
取決於你如何定義「最接近」,但一種常用的方法是使用Levenshtein Distance得分。 Apache Commons有這樣的a method in StringUtils。
從那裏你的搜索方法基本上變成:在集合中找到給定輸入具有最小Levenshtein距離的字符串。
沒有什麼內置於Java的。您可以嘗試第三方庫,如SecondString或FREJ。
另一種可與Levenshtein Distance結合使用的方法是首先對單詞進行語音表示。一種算法是Metaphone。
user guide for Apache Commons Codec有這個和其他一些編碼器的細節。
謝謝,這是工作得很好:)如果我有巧克力糖和巧克力餅,而我鍵入巧克力餅,它似乎仍然是派,但它仍然比以前好多了:p謝謝! –
第二個鏈接已損壞。請更新。 (這可能是鏈接 - https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#getLevenshteinDistance(java.lang.CharSequence,%20java.lang。 CharSequence)) –
@KazekageGaara謝謝,完成。 –