0

私の lucene インデックス ドキュメントには、ファースト ネーム、ミドル ネーム、ラスト ネームの 3 つのフィールドがあります。そのため、検索を行う場合は、インデックス内の任意のフィールドで実行する必要があります。したがって、2 つの個別のインデックスを維持する代わりに (完全なコンテキストを持つもの - すべてのインデックスのような 3 つのフィールドの連結文字列を持つものと、個別のフィールドを持つ別のもの) を維持する代わりに、後者のアプローチのみを使用しました。つまり、個別のフィールドを持つインデックスのみを維持しました。 . そのため、検索テキストが送信されると、3 つの個別の用語クエリが結合され、結合されたブール クエリで検索が行われます。したがって、検索テキストがいずれかのフィールドに一致する場合、検索結果が取得されます。問題は、検索テキストの間にスペースがあり、ファーストネームが最初の単語、ミドルネームが最後の単語である場合です。個別のフィールドを持つインデックスを使用してこの検索を実行する方法。これを達成する方法はありますか?

4

1 に答える 1

1

2 つの個別のインデックスを維持する必要はありません。4 つのフィールドを持つ単一のインデックスを作成します。

  1. ファーストネーム
  2. ミドルネーム
  3. 苗字
  4. フルネーム (フルネームはこのフィールドの一部として索引付けされます)

デフォルトの検索フィールドをフルネームにして、ユーザーがさらに絞り込みたい場合は、名/ミドルネーム/姓のフィールドでもクエリを発行できます。

于 2012-08-06T14:23:05.093 に答える