我需要搜索成员的名字和姓氏,我已经成功做到了。下一件事我必须做的是,成员的连接应该在列表中排在第一位(按连接排序。),就像在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]
}lucene有什么方法可以做到这一点吗?
发布于 2013-09-12 15:18:06
我认为您可以在Lucene中的collect步骤或score步骤中添加排序过程。我认为你先得到关系,在搜索成员的时候,你可以检查该成员是否在关系中。如果成员在关系中,您可以添加此单据的分数,例如编写自己的收集器,扩展TopFieldDocCollector,并在collect方法中在super.collect()之前添加score *= 10f。
发布于 2013-09-15 04:54:14
将好友ids添加到索引的解决方案。在这种情况下,您的搜索查询应该遵循form +name:firstName +name:lastName friend:userId^10。friendId有更大的提升,并将使好友在您的查询中排名靠前。
https://stackoverflow.com/questions/18742651
复制相似问题