【发布时间】:2026-01-24 10:55:01
【问题描述】:
我对如何从 solr 排序返回结果有一个要求。在高层次上,它们应该如下所示:
- subset1 字段的完全匹配,按日期排序
- subset2 字段的完全匹配,按日期排序
- subset1 字段的部分匹配按日期排序
- subset2 字段的部分匹配按日期排序
- subset1 字段的模糊匹配按日期排序
- subset2 字段的模糊匹配按日期排序
目前我正在排序 solr 分数,然后是日期。当我查询 solr 时,我使用了一个 boost 函数,它对旧文档进行反向提升,因此它们被向下移动,而新文档也“浮动”到顶部,并且我正在提升适当的字段,以便我得到精确、部分和以正确的顺序进行模糊匹配。这让我大部分时间到达那里。
现在是棘手的部分。该要求规定,如果我搜索“red ford truck”之类的内容,则包含“red ford truck”的文档,无论术语的频率如何,都应该得到相同的评分。将较新的文档提升到顶部不会对分数产生足够的影响,无法将具有较高词频的文档推到足够低的程度。
例如,假设我有 2 个文档: 文档 1:
- Field1:“红色福特卡车真的很红,而且是一辆快车”
- 日期:2010 年 1 月 1 日
文档 2:
- 字段 1:“红色福特卡车停在街上”
- 日期:2012 年 1 月 10 日
当我搜索“red ford truck”时,我希望文档 2 首先出现,因为它较新并且包含所有查询词。当前文档 1 将首先出现,因为它在 Field1 中有更多匹配项,并且反向提升不足以将其向下推。
所以现在我的问题是 solr 中是否有一个配置点来告诉它在查询的术语上只匹配一次文档?有点像 T-SQL 中的 Exists。
如果有任何其他有用的信息,请告诉我,并提前感谢您的时间。
【问题讨论】:
标签: solr