7.13. grn_expr#

grn_exprは特定の条件にマッチするレコードを検索したり、データベースを操作するオブジェクトです。 ぐるんしき と読みます。(由来は「Groongaの式」。)

データベースからレコードを検索する条件は条件式を集合演算で結合して表現できます。例えば、条件式には 等価条件式小なり条件式 などがあります。集合演算には 積(AND)和(OR)差(NOT) などがあります。gnr_exprはこれらの条件を使ってレコードを検索します。類似文書検索や近傍検索などといった高度な検索もgrn_exprで実行できます。柔軟な全文検索も実行できます。例えば、特定の単語にマッチしたときのヒットスコアを調整したり、検索結果数によって検索漏れの少ないアルゴリズムで再検索し、再現率を向上するといったことも実現できます。

grn_exprを作る方法は3つあります:

クエリー構文 は一般的なインターネット検索サイトにある検索フォーム用の構文です。シンプルで使いやすいですが、制限があります。 クエリー構文 では実行できない条件式や集合演算があります。 クエリー構文selectquery オプションで指定する検索条件で使えます。

スクリプト構文 はECMAScriptに似た構文です。 スクリプト構文 ではすべての条件式と集合演算を使えます。 スクリプト構文selectfilter オプションで指定する検索条件や scorer オプションで指定する式で使えます。

groongaをライブラリとして使うと、grn_expr関連のAPIを呼び出してgrn_exprを作ることができます。 スクリプト構文 のように、APIを呼び出すと全ての機能を使えます。grn_exprを作る構文を新しく作るときにはAPIが便利です。APIは rroonga というGroongaのRubyバインディングで使われています。rroongaでは文字列をパースするのではなく、Rubyの構文を使ってgrn_exprを作ることができます。

7.13.3. 参考#