5

現在、Luceneを使用しています。私の要件は、Facebookの検索ボックスのようなものです。ユーザーは人や友達を検索します。しかし、私の要件では、ユーザーは名前、場所、電子メールアドレスなどのプライバシー設定をすべての人または友人だけに表示できます。彼は、これらのフィールドを友人やコミュニティの他のメンバーから表示および非表示にすることができます。

名前、場所、メールアドレスに基づいて簡単な検索を実装しました。しかし今、私はプライバシー設定に基づいて検索を変更しています。

これが私のシナリオです..

ユーザーAにはプライバシー設定があります。
名前は友達にのみ表示されます
電子メールはすべての人に表示され
ます場所は誰にも表示されません。

ユーザーXが検索ボックスにユーザーAの場所を入力した場合、その場所は結果に表示されないはずです。ただし、ユーザーXが検索ボックスに「ユーザーAの名前」と入力した場合、ユーザーAには名前が制限されておらず、プライバシー設定で友人に表示さ れるため、表示されるはずです。

アプローチを教えていただけませんか。

要件を明確に記述していない場合はお知らせください。

私は次のアプローチを分析しました
。1-IndexSearcherのexplainメソッド(全体的なパフォーマンスに影響します)
2-フィルターを調べましたが、多くを得ることができませんでした

私のアプローチ:

名前に基づいて
resultSetを取得する場所に基づいてresultSetを
取得する電子メールアドレスに 基づいてresultSetを取得する

3つの結果セットごとにループし、プライバシー設定に関連する条件を適用し、プライバシー設定に基づいてアイテムを除外します。そして最後に、3つの結果セットすべてをマージします。

他のアプローチはありますか?私と共有してください。ありがとう。

4

1 に答える 1

1

要件に応じて lucene クエリを作成するために、検索可能なプラグインで lucene クエリ構文を使用できる場合があります。

ここまたはここで見つけることができます

デフォルトのプロパティ設定をオーバーライドすることで、検索を制限できます。このまま応募すればいいのに……。

class A {
      String x
      String y
      String z

    static searchable = [only: ['x', 'y']] 
    // …
}

これを使用して、検索可能なプロパティを制限できます。

于 2013-03-21T09:42:38.013 に答える