繁体   English   中英

Lucene搜索排序

[英]Lucene Search Sorting

我需要按名和姓搜索会员,这已经成功完成了。 接下来,我要做的是,成员的联系应该排在列表的首位(按联系排序)。就像在Facebook中,朋友排在列表的首位,而不是社区的其他用户。

我正在使用grails插件Searchable。 一种简单的方法是对searchListFromSearchable连接的searchListFromSearchable列表进行排序。

以下是域结构。

class Member extends {

    String firstName
    String lastName

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

    static hasMany = [connections: Connection]

}

和Connection类如下

class Connection {

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

}

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

我认为您可以在Lucene的“收集”步骤或“评分”步骤中添加排序过程。 我认为您首先获得了该关系,并且在搜索该成员时,可以检查该成员是否在该关系中。 如果成员处于关系中,则可以添加此文档的分数,例如编写自己的扩展TopFieldDocCollector的收集器,并在collect方法中的super.collect()之前添加score *= 10f

在添加朋友ID到索引的解决方案中。 在这种情况下,您的搜索查询应采用+ name:firstName + name:lastName friend:userId ^ 10的形式。 friendId具有更大的提升,将使朋友在您的查询中排名较高。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM