7.13. grn_expr#
grn_exprは特定の条件にマッチするレコードを検索したり、データベースを操作するオブジェクトです。 ぐるんしき
と読みます。(由来は「Groongaの式」。)
データベースからレコードを検索する条件は条件式を集合演算で結合して表現できます。例えば、条件式には 等価条件式
や 小なり条件式
などがあります。集合演算には 積(AND)
、 和(OR)
、 差(NOT)
などがあります。gnr_exprはこれらの条件を使ってレコードを検索します。類似文書検索や近傍検索などといった高度な検索もgrn_exprで実行できます。柔軟な全文検索も実行できます。例えば、特定の単語にマッチしたときのヒットスコアを調整したり、検索結果数によって検索漏れの少ないアルゴリズムで再検索し、再現率を向上するといったことも実現できます。
grn_exprを作る方法は3つあります:
クエリー構文 は一般的なインターネット検索サイトにある検索フォーム用の構文です。シンプルで使いやすいですが、制限があります。 クエリー構文 では実行できない条件式や集合演算があります。 クエリー構文 は select の query
オプションで指定する検索条件で使えます。
スクリプト構文 はECMAScriptに似た構文です。 スクリプト構文 ではすべての条件式と集合演算を使えます。 スクリプト構文 は select の filter
オプションで指定する検索条件や scorer
オプションで指定する式で使えます。
groongaをライブラリとして使うと、grn_expr関連のAPIを呼び出してgrn_exprを作ることができます。 スクリプト構文 のように、APIを呼び出すと全ての機能を使えます。grn_exprを作る構文を新しく作るときにはAPIが便利です。APIは rroonga というGroongaのRubyバインディングで使われています。rroongaでは文字列をパースするのではなく、Rubyの構文を使ってgrn_exprを作ることができます。
7.13.3. 参考#
grn_expr: grn_expr関連のAPI