1

MVC アプリケーション (MySql を使用) の全文検索を Lucene .NET に変更しています。私のパーソナライズされた検索には、Lucene で再現できないいくつかの癖があります。

大きなものは次のようなものです。

顧客 1 の連絡先リストには顧客 2 がいて、彼にキーワードを割り当てています。たとえば、「お母さん」とします。これは非公開のキーワードで、顧客 1 のみが表示でき、顧客 1 が検索した場合にのみ機能します。

顧客 1 が「お母さん」を検索:

  • 顧客 2
  • 製品 3
  • 等..

顧客 2 が「お母さん」を検索:

  • 製品 3
  • 等..

基本的に、これはユーザー識別子を持つタグです。

Lucene でこれを行うにはどうすればよいですか?

私が考えることができる唯一の方法は、ドキュメント内のキーワードを使用して各ユーザーのプライベート インデックスを作成し、標準インデックスとユーザー プライベート インデックスを使用して検索することです。問題は、数千分の 1 のインデックスになってしまうことです...それが本当に効率的かどうかはわかりません。

ドキュメントのフィールドに何かを設定して、ユーザー ID を保存し、ID が一致した場合にのみ検索できるようにする方法はありますか?

ありがとう

編集:

ドキュメント「顧客 2」にキーワード「MOM」を追加する必要がありますが、そのキーワードは顧客 1 が検索する場合にのみ使用できます。顧客 2 が自分自身を検索すると、キーワード 1 以外のすべてのフィールドが使用されます。

4

1 に答える 1

1

1 つの方法は、顧客 ID とそのプライベート キーワードの両方を含むフィールドを各ドキュメントに追加することです。これにより、最終的にCustomer1:momのようなインデックスが作成されます。ユーザーがプライベート キーワードを検索するたびに、顧客 ID とプライベート キーワードがクエリに含まれます (上記のCustomer2:momなど)。

問題は、クエリを事前に解析してプライベート キーワードを変換する必要がある場合があることです。プライベート キーワードが UI で個別に入力されている場合は、その必要はありません。

設定によっては、この方法ではインデックスにさらに多くのフィールドを追加する必要がある場合がありますが、少なくとも数千ではなく 1 つのインデックスである可能性があります。

于 2013-01-25T19:11:22.993 に答える