我在这里学习 apache solr 评分方法。这里说你应该去这个页面了解评分公式。因为我不是数学背景,所以我很难理解高水平的数学。有没有其他方法可以轻松理解基本评分公式?
1 回答
Lucene 使用许多特征来对文档进行评分,但基本上评分依赖于文档和查询之间的相似性。我之前用或多或少的简单语言解释了计算文档之间相似度的想法,所以让我在这里简单地解释一下。
如果你有所有单词的字典,你可以将它们组织成很长的列表。数学家习惯于对任何序列使用术语“向量”,包括单词列表,所以我们称之为单词向量:
[阿巴特,关于,香蕉,...]
我们也可以将集合中的每个文档表示为向量,其中每个元素代表该文档中相应单词的出现次数。例如,如果文档中出现了 1 次单词“bananas”,出现了 2 次“about”并且没有出现“abbat”,那么文档向量将按如下方式开始:
[0, 2, 1, ...]
现在最有趣的部分来了。我们可以假设,如果两个文档有很多共同词,它们是关于相似的主题,如果它们的共同点很少,那么这些文档是非常不同的。由于我们已经知道文档可以表示为单词的向量,因此我们可以将文档的相似度计算为它们的向量的相似度。
有很多方法可以计算 2 个向量的相似程度。Lucene 使用非常简单的余弦距离。这个想法来自向量的几何表示和它们之间的角度——如果你在 2D 空间中绘制 2 个向量,你会发现这些向量的坐标越相似,它们之间的角度就越小。这就是余弦距离的来源,但实际上您应该只关心 2 个文档中相同单词的数量。
在处理搜索引擎任务时,查询被视为文档:为它们构建文档向量,然后用于从集合中查找最相似(即相关)的文档。