你知道我在哪里可以找到Lucene Similarity Class算法的高级解释。我想理解它,而不必破译与搜索和索引有关的所有数学和术语。
3 回答
Lucene 的内置Similarity
是一个相当标准的“逆文档频率”评分算法。维基百科的文章很简短,但涵盖了基础知识。Lucene in Action一书更详细地分解了 Lucene 公式;它并没有完美地反映当前的 Lucene 公式,但解释了所有主要概念。
首先,分数随该词条在当前文档中出现的次数(词条频率)而变化,与该词条在所有文档中出现的次数(文档频率)成反比。公式中的其他因素是次要的,调整分数以试图使不同查询的分数彼此相当。
将每个文档和搜索词视为一个向量,其坐标代表了整个文档语料库中每个词对该特定文档或搜索词的重要性的某种度量。相似性告诉您两个不同向量之间的距离。
假设您的语料库被规范化以忽略某些术语,那么仅包含这些术语的文档将位于您的语料库定义的向量空间中所有文档的图形的原点。每个包含一些其他术语的文档都表示空间中的一个点,其坐标由文档中该术语相对于语料库中该术语的重要性定义。两个文档(或一个文档和搜索)的坐标将它们的“点”靠得更近,比坐标使它们的“点”更远的那些更相似。
Erickson 在 Lucene 中提到的余弦相似度词频-逆文档频率 (TF-IDF)。假设您在查询和文档中有两袋术语。此测量仅匹配完全匹配的术语,并且在上下文中包括它们的语义权重。经常出现的术语权重较小(重要性),因为您可以在很多文档中找到它们。但是我看到的严重问题是余弦相似度 TF-IDF 在更不一致的数据上不是那么稳健,您需要计算查询和更稳健的文档之间的相似度,例如拼写错误、印刷和语音错误。因为单词必须完全匹配。