0

我有一个存储字符串的多值字段,我需要对其执行查询。它将 ID 存储为字符串。所以,这是领域:

   <field name="id" type="string" indexed="true" stored="true" multiValued="true" termVectors="true"/>

查询看起来像

q: (id:'23' OR id:'24')^2

这会过滤掉字段为 23 或 24 的文档。具有这两个 ID 的文档位于顶部,具有这两个 ID 的文档位于下方。

我想要的是不断提升 2。如果至少有一个 ID 匹配,则将其提升 2。我如何实现这样的目标?

4

1 回答 1

0

一种可能的选择是将此查询转换为ConstantScoreQuery,方法是将^替换为^=

q: (id:'23' OR id:'24')^=2

在这种情况下,如果您的文档同时包含术语 23 和 24,或者仅包含其中任何一个,您的分数仍然相同,均为 2.0

于 2017-09-11T09:06:22.973 回答