我有一个可能有多个值的文本字段。
doc 1: 字段a:“X Y”
doc 2: 字段a:“X”
我希望能够做到:
一个:X ^ 5
并且文档1和2都得到相同的分数。 我一直在搞乱所有的字段选项,但我总是最终得到doc 2,得到了doc 1的两倍。
我已尝试设置multiValued =“true”,但得到的结果相同。
在某种程度上,我可以设置我的搜索或字段定义,以便它只会根据搜索词的存在而提升,而不会受到字段内容的其余部分的影响。
答案 0 :(得分:4)
通过在架构中设置omitNorms=true
并重新索引来禁用规范 - 它应禁用字段的长度规范化并为您提供所需的结果。
有关omitNorms
的详情,请参阅this。
答案 1 :(得分:4)
a
的字段doc 2
与one
的{{1}}相比只有doc 1
个字词。
Solr DefaultSimilartiy实施会在计算得分时考虑字段中的length norm个字词数。
LenghtNorm是two
LengthNorm允许您缩短文档得分。
您可以提供自己的相似度类实现,但不考虑lengthNorm。
检查computeNorm方法实现。
您可以使用omitNorms = false来转换规范 规范允许索引时间提升和字段长度标准化。这允许您在索引时向字段添加提升,并使较短的文档得分更高 因此,如果您使用它,您将失去上述两种情况。