[Grails] 検索結果の一覧表示のページメモ

以前に
ここ
で、検索結果とページ全体の総件数の両方とる方法を記載した

そこで検索表示したあとに、paginateタグを使ってページ処理するときに同様の検索条件で次ページや前ページを検索するときは、

のように、paramsを全てリクエストパラメタにのけると便利。




[Grails] elasticsearch-grails-plugin を入れてみる search編

elasticsearch-grails-plugin については、
elasticsearch grails plugin を入れる
elasticsearch grails plugin 詳細設定
elasticsearch grails plugin index編
で紹介した。
今回は、search編。

注意!
日付での検索は注意が必要なので、日付を使う検索は一番したの記述をみてください。

Query Strings で検索する方法

search() で、中に検索条件を書く

結果は以下のようになる。
result.searchResults : 検索結果
result.total : 検索のトータル

一回の検索で、全件は取れない。全件とるには total の数になるか、searchResults がなくなるまで検索する。
その時は、 以下のように、from を使うとよい。

Query Strings で複雑なクエリ

QueryString の文法は
http://lucene.apache.org/core/3_0_3/queryparsersyntax.html にある。

例えば、AND でつなげたい場合は、

Query Closure で検索する方法

こちらは、Elasticsearch での検索と同じような感覚で使える。

内部で if文も使える。

日付の扱い

search は日付の検索に注意。
Config.groovy で、

で、日付のフォーマット変更できるみたいだけど、将来変わる可能性ありとの事なので、標準のまま利用する。

標準だと、以下のような形式で入っているので、検索するときはこの形式にする

SimpleDateFormat を使うとこんな感じ

ただし、検索のときにロケール/Timezone を意識してね。