我正在构建一个Android应用程序,它接受字符串输入并使用Google API返回排名的书籍列表。
我正在寻找一种方法来比较用户输入的开放式字符串,以及列表中的第一项,以查看他们输入的内容是否“可能”是一本书。我有很多关于书籍,标题,作者,描述等的信息,所以我可以搜索任何部分。
一个例子是:
'eyre affair fforde', 'fforde eyre affair', 'the eyre affair' ----> 'Likely' to be 'The Eyre Affair by Jasper Fforde'
最好的方法是什么?我已经看过levenshtein距离,但是不认为它可以用这种开放式输入,n-gram似乎是一个很好的方法,或模糊匹配。
还有其他想法吗?
答案 0 :(得分:7)
我会选择其中一个:
SimMetrics(SimMetrics是一个开源可扩展的相似度或距离度量库,例如Levenshtein距离,L2距离,余弦相似度,Jaccard相似度等等。)
Commons Lang LevenshteinDistance