Lucene相似度的高级解释?

你知道在哪里可以找到Lucene相似度算法的高级解释。 我想理解它,而不必破译搜索和索引所涉及的所有数学和术语。

Lucene的内置Similarity是一种相当标准的“逆文档频率”评分算法。 维基百科的文章很简短,但涵盖了基础知识。 Lucene in Action一书更详细地阐述了Lucene公式; 它没有完美地反映当前的Lucene公式,但解释了所有主要概念。

首先,分数随着当前文档中术语出现的次数( 术语频率 )而变化,并且术语在所有文档中出现的次数( 文档频率成反比 。 公式中的其他因素是次要因素,调整分数以尝试使来自不同查询的分数相互比较。

将每个文档和搜索词视为一个向量,其坐标表示整个文档集中每个单词对该特定文档或搜索词的重要程度。 相似性告诉你两个不同向量之间的距离。

假设您的语料库被规范化以忽略某些术语,那么仅包含这些术语的文档将位于您的语料库定义的向量空间中所有文档的图形的原点。 每个包含一些其他术语的文档,然后表示空间中的一个点,其坐标由文档中该术语相对于语料库中该术语的重要性定义。 坐标使它们的“点”更靠近在一起的两个文档(或文档和搜索)比那些坐标使它们的“点”更加分开的文档更相似。

erceson在Lucene中提到的是余弦相似度Term Frequency-Inverse document frequency(TF-IDF)。 想象一下,在查询和文档中有两个术语。 该测量仅精确匹配术语,并且在上下文之后包括它们的语义权重。 非常频繁出现的术语具有较小的权重(重要性),因为你可以在很多文档中找到它。 但是我所看到的严重问题是Cosine相似性TF-IDF在更不一致的数据上并不那么强大,在这些数据中你需要计算查询与文档之间的相似性,例如拼写错误,印刷错误和语音错误。 因为单词必须完全匹配。