我在数据库中有很多文章(带有标题,文本),我正在寻找一种算法来查找X个最相似的文章,例如当您提出问题时类似Stack Overflow的“相关问题”。
我为此进行了谷歌搜索,但只发现了有关其他“相似文本”问题的页面,例如将每篇文章与所有其他文章进行比较并将相似之处存储在某个地方。因此,我可以对我刚刚键入的文本进行“实时”处理。
怎么样?
考虑到您实际上对搜索感兴趣的文档的大小和数量,编辑距离不太可能,因为它取决于拼写/单词顺序,并且计算量要比Will会让您相信的高得多。
像Lucene这样的东西是要走的路。您索引所有文档,然后当您要查找与给定文档相似的文档时,可以将给定文档转换为查询并搜索索引。Lucene内部将使用tf- idf和一个反向索引来使整个过程花费的时间与可能匹配的文档数量成正比,而不是与集合中文档总数成正比。