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

Car*_*all 4 java android fuzzy-search n-gram levenshtein-distance

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

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

一个例子是:

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

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

还有其他想法吗?

Chr*_*ris 7

我会选择其中一个:

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

Commons Lang LevenshteinDistance

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