我需要根據姓名和姓氏在我的neo4j數據庫中搜索用戶。 查詢結果應按照它們與搜索查詢匹配的程度排序。 我們希望搜索輸入是兩個單詞(第一個/最後一個或最後一個/名字)。Neo4j - 基於搜索用戶時的適用性得分
到目前爲止我們使用的查詢搜索包含名字的用戶,然後使用UNION ALL再次匹配用戶,但是包含姓氏。 假設搜索輸入是「第一」。 所以我們的查詢是:
MATCH (u:User) WHERE u.first_name =~'(?i).*first.*' RETURN u
UNION ALL u.last_name =~'(?i).*last.*' return u
UNION ALL u.first_name =~'(?i).*last.*' RETURN u
UNION ALL u.last_name =~'(?i).*first.*' return u
所以有名字和搜索輸入的姓氏,用戶將在查詢結果中出現兩次。 然後在java後端,我們計算每個用戶出現的次數(每個用戶都有一個唯一的用戶名),然後進行排序。
我想避免在java後端進行排序和計數,只要可能就簡單地使用單個查詢。
任何幫助,將不勝感激。 謝謝。