4

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

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

一个例子是:

'eyre 事件 fforde'、'fforde eyre 事件'、'eyre 事件'
---->
“可能”是“贾斯珀·弗福德的《艾尔事件》”

解决此问题的最佳方法是什么?我已经查看了 levenshtein 距离,但认为它不适用于这种开放式输入,n-gram 似乎是一个很好的方法,或者模糊匹配。

还有其他想法吗?

4

1 回答 1

8

我会选择其中之一:

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

Commons Lang Levenshtein距离

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

于 2011-02-24T08:51:43.613 回答