1

Luceneに「相互フレンド」の機能を実装したいので、フレンド一覧のドキュメントがたくさんあります。

DOC:
    id: p1
    name: Mike
    profile_id: 1
    friends_id: [2,3,4,5,6,7,8]

また

id: p3
name: John
profile_id: 3
friends_id: [6,7,8,9,10]

また

 id: p5
    name: Roftl
    profile_id: 5
    friends_id: [1,2,3,6,10]

私がアカウントのマイクである場合、Lucene クエリを使用して、共通の友達の数が多い別のアカウントを見つけたいと思います。可能であれば、応答にその番号のフィールドも追加します。

4

1 に答える 1

0

次の手順を試してください。

1)Mikeドキュメントのtermvectorにアクセスします。

2)フィールドfriends_idの用語にアクセスします

3)それらの用語(つまりfriend_ids)を繰り返し、用語クエリのブールクエリを形成します。

4)そのクエリでインデックスを検索します。

5)friends_idに重複する用語がない場合は、機能するはずです。最高の結果はあなたの要件に一致するはずです。

LuceneがMoreLikeThisQueryを提供して、クエリで提供された用語に対して同様のドキュメントを実現するので、さらに優れています。

簡単に言うと、このクエリは、候補ドキュメントの類似ドキュメントを見つけるために使用されます。それがすることは、上記のステップに他なりません。ユースケースでは、候補ドキュメントの類似ドキュメントを探しているのではなく、ドキュメント内のフィールドの上位類似ドキュメントを探しています。

MoreLikeThisQueryのサンプルコードは次のとおりです

別のチュートリアル

于 2013-03-10T19:09:42.493 に答える