現在、Luceneを使用しています。私の要件は、Facebookの検索ボックスのようなものです。ユーザーは人や友達を検索します。しかし、私の要件では、ユーザーは名前、場所、電子メールアドレスなどのプライバシー設定をすべての人または友人だけに表示できます。彼は、これらのフィールドを友人やコミュニティの他のメンバーから表示および非表示にすることができます。
名前、場所、メールアドレスに基づいて簡単な検索を実装しました。しかし今、私はプライバシー設定に基づいて検索を変更しています。
これが私のシナリオです..
ユーザーAにはプライバシー設定があります。
名前は友達にのみ表示されます
電子メールはすべての人に表示され
ます場所は誰にも表示されません。
ユーザーXが検索ボックスにユーザーAの場所を入力した場合、その場所は結果に表示されないはずです。ただし、ユーザーXが検索ボックスに「ユーザーAの名前」と入力した場合、ユーザーAには名前が制限されておらず、プライバシー設定で友人に表示さ れるため、表示されるはずです。
アプローチを教えていただけませんか。
要件を明確に記述していない場合はお知らせください。
私は次のアプローチを分析しました
。1-IndexSearcherのexplainメソッド(全体的なパフォーマンスに影響します)
2-フィルターを調べましたが、多くを得ることができませんでした
私のアプローチ:
名前に基づいて
resultSetを取得する場所に基づいてresultSetを
取得する電子メールアドレスに 基づいてresultSetを取得する
3つの結果セットごとにループし、プライバシー設定に関連する条件を適用し、プライバシー設定に基づいてアイテムを除外します。そして最後に、3つの結果セットすべてをマージします。
他のアプローチはありますか?私と共有してください。ありがとう。