Lucene相似度的高级解释?

时间:2009-03-17 18:02:02

标签: java search lucene search-engine

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

3 个答案:

答案 0 :(得分:8)

Lucene的内置Similarity是一个相当标准的"Inverse Document Frequency"评分算法。维基百科的文章很简短,但涵盖了基础知识。这本书Lucene in Action更详细地分解了Lucene公式;它没有完美地反映当前的Lucene公式,但解释了所有主要概念。

主要是,分数会随着当前文档中术语出现的次数(术语频率)而变化,而反向则与术语出现的次数不同所有文件(文件频率)。公式中的其他因素是次要的,调整得分以试图使得来自不同查询的得分相当可比。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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