我在数据库中有很多文章(带有标题、文本),我正在寻找一种算法来找到 X 个最相似的文章,例如当你提出问题时 Stack Overflow 的“相关问题”。
我尝试用谷歌搜索这个问题,但只找到了有关其他“相似文本”问题的页面,例如将每篇文章与所有其他文章进行比较并将相似之处存储在某处。所以在我刚刚输入的文本上“实时”执行此操作。
How?
编辑距离 http://en.wikipedia.org/wiki/Levenshtein_distance不是一个可能的候选者,因为它取决于拼写/词序,并且考虑到您实际有兴趣搜索的文档的大小和数量,计算成本比 Will 让您相信的要高得多。
像 Lucene 这样的东西就是最好的选择。您为所有文档建立索引,然后当您想要查找与给定文档相似的文档时,您可以将给定文档转换为查询,并搜索索引。 Lucene 内部将使用tf-idf http://en.wikipedia.org/wiki/Tf-idf and an 倒排索引 http://en.wikipedia.org/wiki/Inverted_index使整个过程花费的时间与可能匹配的文档数量成正比,而不是与集合中的文档总数成正比。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)