簡體   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