[英]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.