【发布时间】:2014-04-11 13:38:25
【问题描述】:
我正在尝试根据某个术语在结果中出现的次数对我的文档进行评分。
用例如下:
假设我有一个包含数千个对象的索引,每个对象都有一个名为color 的字段。如果我想查找所有对象并返回 20 行的子集,我如何提升文档以便根据颜色字段术语平均划分结果?
因此,如果索引包含 1000 个文档,其中字段颜色的术语被划分为:
- 红色:100 个文档
- 蓝色:200 个文档
- 黄色:300 个文档
- 绿色:400 个文档
我如何(在查询这些文档的情况下)确保颜色均匀分布,以便(在 20 行的情况下)我得到具有以下术语的文档:
- 红色:5 个文档
- 蓝色:5 个文档
- 黄色:5 个文档
- 绿色:5 个文档
我尝试像这样均匀地提升术语:
(color:red^4 color:blue^4 color:yellow^4 color:green^4)
但这不起作用(分数仍然不同),除此之外,在真实场景中我不知道这些条款。我想知道是否有一个简单的解决方案,我正在查看FunctionQuery,但我不知道这是否会帮助我解决我的问题
我不知道以下是否更容易。我不想根据术语平均划分结果集,而是想保持术语的“流行度”。所以在这种情况下(又是 20 个文档)我想检索:
- 红色:2 个文档 (100 / 1000 * 20)
- 蓝色:4 个文档 (200 / 1000 * 20)
- 黄色:6 个文档 (300 / 1000 * 20)
- 绿色:8 个文档 (400 / 1000 * 20)
【问题讨论】:
标签: solr