質問
私たちは、検索モデルとWebアプリケーションに取り組んでいます。
それは、クライアントからのリクエストパラメータをキャプチャして、検索するためのhibernate-検索クエリを構築し、検索サーブレットでます。
今の問題は、クライアントからのパラメータが変更可能!あるある。
私たちが受け入れるすべてのパラメータは、次のように記載されています
1)キーワードます。
検索に使用するキーワード(複数可)、検索要求は、ちょうどこのパラメータが渡されても処理することができます。
有効な例:
/search?keyword="test"
2)lowleftX、lowleftY、upperrightX、upperrightY。
これらの4つのパラメータは、これらの4つのparamersはLuceneの中TermRangeQueryのために使用されるのと同じ時間やnever.Sinceで発生する必要があります。そのうちの一つが発生した場合は、残りの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)開始、リミット
これらの2つのパラメータは、ページングのために使用されます。
5)returnFields
(それはインデックスに格納されている場合)のインデックスから取得されreturnFieldsクライアントへ戻ります。
私は推定構文を使用してクエリを作成する方法については考えているので(もし....他に....あれば...)。
缶誰も教えてどのように?
解決
私は、あなたが「見積構文」で何を意味するかわかりませんが、ポイント1は-3実際のLuceneクエリされているように私には思えます。あなたはパラメータを検査し、あなたが持っているクエリの種類のパラメータの名前と数に応じて決定する必要があります。クエリの異なるサブクラスを使用して、特定のBooleanQueryに、あなたは、適切なLuceneクエリを構築し、休止状態の検索FullTextQueryを作成するためにそれを使用します。このフルテキストクエリでは、あなたが開始とリミット偶然にを指定します。あなたが直接インデックスからフィールド値を取得するために、投影を使用している場合もフルテキストクエリの投影フィールド名を設定します。 私は、これは少し助けを願っています。