2010-11-19 7 views
-1

私たちは検索モデルを使ってWebアプリケーションを開発しています。デザインパターンをご依頼ください

検索サーブレットでは、クライアントから要求パラメータを取得し、検索用のハイバネート検索クエリを作成します。

ここで問題は、clienのパラメータが変更可能であることです。

すべてのパラメータは次のとおりです:

1)キーワード。

検索に使用するキーワードは、このパラメータが渡された場合でも検索リクエストを処理できます。 有効例:

/search?keyword="test" 

2)lowleftX、lowleftY、upperrightX、upperrightY。

これらの4つのパラメータは同時に発生する必要があります。また、これらの4つのパラメタはluceneのTermRangeQueryに使用されています。これらの1つが発生した場合、残りの3つも発生する必要があります。 そして、これらの4つのパラメータは、「キーワード」と共に、sametimeで発生する可能性があります。 有効例:これは、検索範囲を制限するために使用される

/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30 
/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30&keyword="test" 

3)カテゴリ(だけ)特別なカテゴリ内の検索。

4)start、limit

この2つのパラメータは、ページングに使用されています。

5)は、インデックスからretivivedする

returnFieldsをreturnFields(それがインデックスに格納されている場合)、クライアントに返します。

したがって、推定構文(if .... else .... if ...)を使用してクエリを構築する方法についてはわかりません。

どのように教えていただけますか?

答えて

0

「推定構文」とは何を意味するのか分かりませんが、ポイント1-3は実際のLuceneクエリです。パラメータを調べ、どのタイプのクエリの名前とパラメータの数に応じて決定する必要があります。 Queryのさまざまなサブクラス、特にBooleanQueryを使用して、適切なLuceneクエリを作成し、それを使用してHibernate Search FullTextQueryを作成します。このフルテキストクエリでは、開始パラメータと制限パラメータを指定します。投影を使用してフィールド値を直接インデックスから取得する場合は、フルテキストクエリで投影フィールド名も設定します。 これが少し助けてくれることを願っています。

関連する問題