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