私のneo4jデータベースで、姓と名に基づいてユーザーを検索する必要があります。 クエリの結果は、検索クエリにどれだけ一致するかによってソートする必要があります。 検索入力は2単語(最初/最後または最後/最初の名前)と予想されます。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
だから、最初の名前を持つユーザーと検索入力の姓は、クエリ結果に2回表示されます。 次に、Javaバックエンドで、各ユーザーが何回出現したかを数えます(各ユーザーには一意のユーザー名が割り当てられています)。
私はJavaのバックエンドでソートとカウントを避け、可能であれば単純に単一のクエリを使用したいと考えています。
ご協力いただければ幸いです。おかげさまで