首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lucene搜索排序

Lucene搜索排序
EN

Stack Overflow用户
提问于 2013-09-11 21:31:37
回答 2查看 125关注 0票数 0

我需要搜索成员的名字和姓氏,我已经成功做到了。下一件事我必须做的是,成员的连接应该在列表中排在第一位(按连接排序。),就像在Facebook中一样,朋友在列表中排在第一位,而不是社区的其他用户。

我使用的是grails的可搜索插件。一种简单的方法是对searchListFromSearchable w.r.t进行排序。连接列表。

下面是域结构。

代码语言:javascript
复制
class Member extends {

    String firstName
    String lastName

    static searchable = {
        analyzer "simple"
        only = ['firstName', 'lastName']
        firstName boost: 5.0
    }

    static hasMany = [connections: Connection]

}

和Connection类如下所示

代码语言:javascript
复制
class Connection {

    String uuid
    Member connectedMember
    static belongsTo = [member: Member]

}

lucene有什么方法可以做到这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-12 15:18:06

我认为您可以在Lucene中的collect步骤或score步骤中添加排序过程。我认为你先得到关系,在搜索成员的时候,你可以检查该成员是否在关系中。如果成员在关系中,您可以添加此单据的分数,例如编写自己的收集器,扩展TopFieldDocCollector,并在collect方法中在super.collect()之前添加score *= 10f

票数 0
EN

Stack Overflow用户

发布于 2013-09-15 04:54:14

将好友ids添加到索引的解决方案。在这种情况下,您的搜索查询应该遵循form +name:firstName +name:lastName friend:userId^10。friendId有更大的提升,并将使好友在您的查询中排名靠前。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18742651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档