我需要通过名字和姓氏搜索成员,这是我成功完成的。 接下来我需要做的是成员的连接应该在列表中排在第一位(按连接排序。),就像在Facebook中一样,朋友在列表中排在第一位,而不是社区的其他用户。
我正在使用grails插件可搜索。一种简单的方法是对searchListFromSearchable
w.r.t进行排序。连接列表。
以下是域名结构。
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]
}
有没有办法做到这一点?
答案 0 :(得分:0)
我认为您可以在Lucene的收集步骤或分数步骤中添加排序过程。我认为你首先得到关系,当搜索成员时,你可以检查成员是否在关系中。如果该成员处于该关系中,则可以添加此文档的分数,例如编写自己的收集器,其TopFieldDocCollector
扩展score *= 10f
并super.collect()
collect
之前添加{{1}}
答案 1 :(得分:0)
关于将朋友ID添加到索引的解决方案。在这种情况下,您的搜索查询应该遵循表单+名称:firstName + name:lastName friend:userId ^ 10。 friendId有更大的提升,会让你的朋友在你的查询中排名很高。