0

検索モデルを使用したWebアプリケーションに取り組んでいます。

検索サーブレットでは、クライアントからの要求パラメータをキャプチャしてから、検索用の休止状態検索クエリを作成します。

ここで問題となるのは、クライアントからのパラメータが変更可能であるということです。

受け入れるすべてのパラメーターは次のとおりです。

1)キーワード。

検索に使用するキーワードは、このパラメータを渡しただけでも検索リクエストを処理できます。

有効な例:

/search?keyword="test"

2)lowleftX、lowleftY、upperrightX、upperrightY。

これらの4つのパラメーターは、同時に発生するか、発生しない必要があります。これらの4つのパラメーターは、luceneのTermRangeQueryに使用されるためです。それらの1つが発生した場合、残りの3つも発生する必要があります。

そして、これらの4つのパラメーターは、「キーワード」と同時に発生する可能性があります。

有効な例:

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

3)カテゴリー

これは、検索範囲を制限するために使用されます(特別なカテゴリ内で検索するだけです)。

4)開始、制限

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

5)returnFields

インデックスから取得され(インデックスに格納されている場合)、クライアントに返されるreturnFields。

したがって、見積もり構文(if .... else .... if ...)を使用してクエリを作成する方法がわかりません。

誰か教えてもらえますか?

4

1 に答える 1

0

「推定構文」の意味はわかりませんが、ポイント1〜3が実際のLuceneクエリであるように思われます。パラメータを調べて、パラメータの名前と数に応じて、クエリの種類を決定する必要があります。次に、Queryのさまざまなサブクラス(特にBooleanQuery)を使用して、適切なLuceneクエリを作成し、それを使用してHibernateSearchFullTextQueryを作成します。このフルテキストクエリでは、開始パラメータと制限パラメータを指定します。射影を使用してインデックスから直接フィールド値を取得する場合は、全文クエリで射影されたフィールド名も設定します。これが少しお役に立てば幸いです。

于 2010-11-21T12:17:31.047 に答える