均匀地跨越不同长度的区域

时间:2012-02-20 02:02:05

标签: solr

我有一个可能有多个值的文本字段。

doc 1:  字段a:“X Y”

doc 2:  字段a:“X”

我希望能够做到:

一个:X ^ 5

并且文档1和2都得到相同的分数。 我一直在搞乱所有的字段选项,但我总是最终得到doc 2,得到了doc 1的两倍。

我已尝试设置multiValued =“true”,但得到的结果相同。

在某种程度上,我可以设置我的搜索或字段定义,以便它只会根据搜索词的存在而提升,而不会受到字段内容的其余部分的影响。

2 个答案:

答案 0 :(得分:4)

通过在架构中设置omitNorms=true并重新索引来禁用规范 - 它应禁用字段的长度规范化并为您提供所需的结果。

有关omitNorms的详情,请参阅this

答案 1 :(得分:4)

a的字段doc 2one的{​​{1}}相比只有doc 1个字词。

Solr DefaultSimilartiy实施会在计算得分时考虑字段中的length norm个字词数。

LenghtNorm是two

LengthNorm允许您缩短文档得分。

您可以提供自己的相似度类实现,但不考虑lengthNorm。
检查computeNorm方法实现。

您可以使用omitNorms = false来转换规范 规范允许索引时间提升和字段长度标准化。这允许您在索引时向字段添加提升,并使较短的文档得分更高 因此,如果您使用它,您将失去上述两种情况。