libro
www.tuyano.com
Google App Engine for Java(GAE/J)プログラミング入門

Search Serviceによる全文検索 (5/7)

作成:2012-06-02 15:18
更新:2012-06-02 15:18

■Queryを使ってDocumentの一覧を取得する

では、データをDocumentとして保存できるようになったところで、次は「保管されているDocumentを取り出して一覧表示する」ということを行いましょう。

これは、Searchの要である「全文検索」の初歩といえるものです。検索の基本的な流れは全文検索そのものですが、検索条件などの部分は空っぽ、というものです。これがわかれば、全文検索の機能の半分はわかった、といってよいでしょう。

Documentの検索は、検索するインデックスの「Index」インスタンスにある「search」メソッドで行えます。これは引数に検索に関する条件を指定して呼び出すものです。この引数は、テキストで指定をすることもできますが、今回は「Query」クラスを利用したやり方を使ってみます。

Queryクラスは、文字通り全文検索のクエリー(検索のための命令文)を管理するためのものです。これは、Query作成のための「Query.Builder」というクラスのインスタンスを作成し、これに必要な設定を行なってから作成をします。以下に整理しましょう。


1. Query.Builderの作成
Query.Builder 変数 = Query.newBuilder();

2. クエリーの設定を行う
《Query.Builder》.setOptions(《QueryOptions》);

3. Queryの生成
Query 変数 = 《Query.Builder》.build();

基本的な流れは特に難しくはありません。これらはメソッドチェーンを利用して一続きに記述することも可能です。ここでポイントとなるのは、設定情報をまとめた「QueryOptions」でしょう。これは以下のように作成をします。


1. QueryOptions.Builderインスタンスを用意する
QueryOptions 変数 = QueryOptions.newBuilder();

2. 諸設定を行う
《QueryOptions.Builder》.setLimit( 最大項目数 );
《QueryOptions.Builder》.setOffset( 検索開始位置 );
《QueryOptions.Builder》.setFieldsToReturn( フィールド名1, フィールド名2,……);
《QueryOptions.Builder》.setSortOptions(《SortOptions》);

3. QueryOptionsを生成する
QueryOptions 変数 = 《QueryOptions.Builder》.build();

諸設定は、とりあえず「取得する最大項目数」「取得するフィールドの設定」「ソートの設定」といった基本的なものだけ挙げておきました。とりあえず、これだけわかればOKでしょう。――ただし! これまた、ソートの設定には「SortOption」というものを用意しないといけません。これも整理しておきます。


1.SortOptions.Builderを用意する
SortOptions.Builder 変数 = SortOptions.newBuilder();

2. ソート条件のSortExpressionを追加する
《SortOptions.Builder》.addSortExpression(《SortExpression》);

3. SortOptionsを生成する
SortOptions 変数 = 《SortOptions.Builder》.build();

さあ、また登場しました。ソート条件の設定をするSortExpressionクラス。これも以下に作り方を整理しておきましょう。


1. SortExpression.Builderを用意する
SortExpression.Builder 変数 = SortExpression.newBuilder();

2. ソートで使用するフィールドを設定する
《SortExpression.Builder》.setExpression( フィールド名 );

3. 昇順・降順を指定する
《SortExpression.Builder》.setDirection( SortDirection.ASCENDINGまたはDESCENDING );

4. デフォルト値を指定する
《SortExpression.Builder》.setDefaultValue( テキスト );
《SortExpression.Builder》.setDefaultValueNumeric( 数値);

5. SortExpressionを生成する
SortExpression 変数 = 《SortExpression.Builder》.build();

――これらは、必ずしもすべて用意する必要はありません。特に、ここで説明している処理の半分以上はソートに関するものですが、これはなくても別にかまいません(なければ保存した順にソートされます)。ですから、ソートにこだわらなければ、割と簡単にQueryは作れます。

これでようやく、ひと通りの説明が終わりました! そんなわけで、Query、クエリーの設定をするQueryOptions、ソートの設定をするSortOptions、ソートの内容を設定するSortExpression、以上のクラスの作り方がわかって、ようやく検索を実行する準備が整いました!

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「Google App Engine for Java(GAE/J)プログラミング入門」に戻る