Lucene的规范是什么?

时间:2013-07-08 21:08:42

标签: lucene

我不明白它们是什么,并且非常欣赏一个简单的解释,说明它们带给世界的价值,而没有太多关于它们如何工作的实施细节。

2 个答案:

答案 0 :(得分:13)

规范是分数计算的一部分。无论你喜欢什么,都可以计算出标准。使规范与众不同的主要因素是它是在指数时间计算出来的。通常,基于文档与查询匹配的程度,在查询时计算影响分数的其他因素。 norm通过与文档一起存储来节省查询性能。

标准实现可以在Lucene的TFIDFSimilarity中找到并得到很好的描述。在那里,它是设置字段提升的产物(或者所有字段提升的产物,如果在字段上设置了多个)和“lengthNorm”(这是一个计算因子,用于在较短的文档上更重地匹配匹配)。这些都不依赖于查询的构成,因此是在索引时计算和存储的好选择。

然后将它们以压缩且高损耗的单字节格式存储(具有大约1个精确的十进制数字)。

答案 1 :(得分:5)

当您索引,处理源信息时,您会将某些文档和字段视为比其他文档和字段更重要。

例如,任务是窥探同事的电子邮件。标题字段中的单词匹配比正文字段中的单词匹配更重要。我们通过将标题字段中的匹配数乘以比我们用于主体字段匹配的数字更大的数字来实现此目的。

可转换电子邮件记录示例

+----+-------------+--------------+
| ID | Title       | Body         |
|----+-------------+--------------|
| 7  | Back Monday | Ben was sick |
| 8  | I'm sick    | cover for me |
| 9  | Help        | I am stuck   |
+----+-------------+--------------+

因此,搜索“生病”并将标题匹配乘以4并将正文匹配乘以2并首先排序最高分数 - 文档首先排名为ID 9,排名标准为8秒(参见下面的表1)。

表1:按分数(降序)排序的“病态”一词的匹配

+----+---------+--------+-----------------------+
| Id | Title   | Body   | Score                 |
|    | Matches | Matches|                       |
|----+---------+--------+-----------------------|
| 9  | 1       | 0      | (1 * 4) + (0 * 2) = 4 |
| 8  | 0       | 1      | (0 * 4) + (1 * 2) = 2 |
+----+---------+--------+-----------------------+

这些数字,4和2,我们将匹配乘以规范