【发布时间】:2012-01-02 16:37:19
【问题描述】:
我需要能够搜索某个组的所有成员(由一个共同的groupId 字段标识)并通过与另一个字段的相关性将它们取回 (description)
意思是,假设我已将以下文档编入索引:
name="a" groupId="445" description="lives in a blue house"
name="b" groupId="445" description="has a green car"
name="c" groupId="445" description="likes blue flowers"
name="d" groupId="445" description="his eyes are brown"
name="e" groupId="445" description="her table is light-blue"
我想通过 id (groupId:445 AND ...) 获取它们,然后按与“蓝色”一词的相关性排序
含义 - 我想先得到 a、b、c 但仍然得到其他人(描述中根本没有“蓝色”这个词),只是分数较低
我怎样才能做到这一点?
谢谢!
【问题讨论】:
-
一个简单的hackish方法是使用布尔查询来组合您的多个查询。更好的方法是使用 CustomScoreQuery 的子类并覆盖 getCustomScoreProvider 以返回您的 CustomScoreProvider 子类。
-
我已经查看了 CustomScoreQuery,此时更改评分机制对我来说有点先进,所以我可能会像你说的那样重新排列查询