-1

エンド ユーザーがすべてのビジネス オブジェクトに対して自由形式の検索を実行できるようにしたいと考えています。ユーザーは Lucene 検索式を提供します。ビジネス オブジェクトはまったく無関係であり、共通点はありません。

各ビジネス オブジェクトは、固有の属性で構成されています。この質問のために、以下はビジネス オブジェクトです。

ブログのタイトル; 体; }

ユーザー{名; 苗字; 国; 電子メールアドレス; 性別(男女); }

次のユースケースに対応できるインデックスを作成するにはどうすればよいですか。

  1. ブログとユーザーの両方での自由形式のテキスト検索。たとえば、「India」という単語が表示されるユーザーとブログ エントリを検索します。エンド ユーザーは、すべての Lucene ドキュメント フィールド間の ORing を指定する必要はありません。

  2. ユーザーのみの自由形式のテキスト検索。たとえば、「yahoo」という単語が表示されるユーザーを検索します。エンド ユーザーは、ユーザーに関連するすべての Lucene ドキュメント フィールド間で ORing を指定する必要はありません。

  3. ブログ エントリのみの自由形式のテキスト検索。たとえば、「Skeet Async」という単語のいずれかが表示されるブログ エントリを検索します。エンド ユーザーは、ブログに関連するすべての Lucene ドキュメント フィールド間で ORing を指定する必要はありません。

  4. ブログエントリの属性による自由形式のテキスト検索。たとえば、「タイトル」属性に「非同期」が含まれているブログ エントリを検索します。

  5. ユーザーの属性による自由形式のテキスト検索。たとえば、「LastName」属性に「Skeet」が表示されるユーザーを検索します。

インデックス戦略の定義方法 - 単一インデックスまたは複数インデックス、使用するアナライザー、検索クエリでコンテキストを提供する方法など。

ありがとう。

4

1 に答える 1

1

特定のビジネス オブジェクトの場合、最も簡単な方法は、次のフィールドを持つ lucene ドキュメントを作成することです。

title, body, firstName, lastName, country, emailAddress, gender

タイトルとユーザー関連のフィールドを STORED として保持したい場合があります。

アナライザーの選択は、検索要件 (部分一致、サフィックス クエリ、ステミングなどをサポートするかどうかなど) によって異なります。

指定されたユースケースのクエリ:

1) title:india OR body:india OR country:india
2) title:yahoo OR body:yahoo OR emailAddress:yahoo
3) title:(Skeet OR Async) OR body:(Skeet OR Async)
4) title:asynchronous
5) lastName:skeet
于 2013-01-03T04:28:30.677 に答える