solr得分文档,无论术语频率如何,所有术语都相同

时间:2012-08-01 17:06:06

标签: solr

我要求结果如何从solr排序。从高层次来看,它们应该是这样的:

  • 按日期排序的subset1字段上的完全匹配
  • 按日期排序的subset2字段的完全匹配
  • 按日期排序的subset1字段的部分匹配
  • 按日期排序的subset2字段的部分匹配
  • 按日期排序的subset1字段的模糊匹配
  • 按日期排序的subset2字段的模糊匹配

目前我正在排序solr得分然后约会。当我查询solr时,我正在使用一个boost函数,它对旧文档进行反向提升,这样它们就会向下移动,而较新的文档“浮动”到顶部我也会提升相应的字段,以便我得到精确,部分和模糊匹配正确的顺序。这让我大部分都在那里。

现在是棘手的部分。该要求规定,如果我搜索“红色福特卡车”之类的东西,那么包含“红色福特卡车”的文件,无论条款的频率如何,都应该得到相同的评分。增加较新的文档到顶部不会影响得分足以将具有较高术语频率的文档推得足够远。

例如,假设我有2个文件: doc 1:

  • Field1:“红色福特卡车真的很红,而且是一辆快速的卡车”
  • 日期:2010年1月1日

doc 2:

  • Field1:“红色福特卡车停在街上”
  • 日期:1/10/2012

当我搜索“红色福特卡车”时,我希望文档2首先出现,因为它更新并且具有所有查询的条款。目前文档1将首先出现,因为它在Field1中有更多匹配,而反向提升不足以推动它。

所以现在我的问题是在solr中有一个配置点,告诉它在查询条件上恰好匹配一次文档吗?有点像T-SQL中的Exists。

如果有任何其他有用的信息,请告诉我,并提前感谢您的时间。

1 个答案:

答案 0 :(得分:1)

这些分数因术语频率和场长而不同。

omitNorms似乎正在寻找关于场地长度的内容。看看this之前的答案,并记住该字段的索引时间提升也将被禁用:

  

如果为true,则省略与此字段关联的规范(这将禁用   字段的长度归一化和索引时间提升,并保存   一些记忆)。

omitTermFreqAndPositions似乎正在寻找关于术语频率的内容:

  

如果为true,则忽略发布中的术语频率,位置和有效负载   对于这个领域。对于没有的字段,这可以提高性能   需要那些信息。它还减少了所需的存储空间   对于索引。依赖于在a上发布的位置的查询   使用此选项的字段将无声地找不到文档。这个   对于非文本字段的所有字段,属性默认为true。