Android&模糊匹配,n-gram和Levenshtein距离

时间:2011-02-24 08:40:44

标签: java android levenshtein-distance fuzzy-search n-gram

我正在构建一个Android应用程序,它接受字符串输入并使用Google API返回排名的书籍列表。

我正在寻找一种方法来比较用户输入的开放式字符串,以及列表中的第一项,以查看他们输入的内容是否“可能”是一本书。我有很多关于书籍,标题,作者,描述等的信息,所以我可以搜索任何部分。

一个例子是:

'eyre affair fforde', 'fforde eyre affair', 'the eyre affair'
----> 
'Likely' to be 'The Eyre Affair by Jasper Fforde'

最好的方法是什么?我已经看过levenshtein距离,但是不认为它可以用这种开放式输入,n-gram似乎是一个很好的方法,或模糊匹配。

还有其他想法吗?

1 个答案:

答案 0 :(得分:7)

我会选择其中一个:

SimMetrics(SimMetrics是一个开源可扩展的相似度或距离度量库,例如Levenshtein距离,L2距离,余弦相似度,Jaccard相似度等等。)

Commons Lang LevenshteinDistance

或者摆脱听力或拼写错误:soundexmetaphone