.. -*- rst -*-

.. highlightlang:: none

.. groonga-command
.. database: spec_script_syntax

Script Syntax
=============

TODO: revised.

スクリプト構文はECMAScriptに類似した構文で条件式などを表現するための構文です。ECMAScriptにある演算子に加えてgroonga独自の演算子を追加しています。

まず、ECMAScriptにあるような基本的な演算子を説明し、その後、groongaが追加した独自の演算子を説明します。

基本的な演算子
--------------

TODO: ...

独自の演算子
------------

groongaは検索に特化した2項演算子を追加しています。独自の2項演算子は ``@`` または ``*`` ではじまります。

``カラム @ 値``
^^^^^^^^^^^^^^^

``カラム`` をソースに設定している転置索引を用いて、 ``値`` で検索します。通常は全文検索になりますが、タグ検索などもこの書式で行います。 ``query`` ではデフォルトでこの演算子を使っていることになります。

``カラム @^ 値``
^^^^^^^^^^^^^^^^

``カラム`` の値を ``値`` で前方一致検索します。 ``カラム`` はパトリシアツリーまたはダブル配列の主キー（ ``_key`` ）でなければいけません。

``カラム @$ 値``
^^^^^^^^^^^^^^^^

``カラム`` の値を ``値`` で後方一致検索します。

未サポートです。

``カラム *N "単語1 単語2 ..."``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``カラム`` の値の中に ``単語1`` 、 ``単語2`` 、 ``...``  が近傍にある文書を検索します。（近傍検索。） ``カラム`` には全文検索用のインデックスが設定されていなければいけません。

未サポートです。

``カラム *S "文書"``
^^^^^^^^^^^^^^^^^^^^

``カラム`` の値が ``文書`` に類似している文書を検索します。（類似文書検索。） ``カラム`` には全文検索用のインデックスが設定されていなければいけません。

..
   ``カラム *T "単語"``
   ^^^^^^^^^^^^^^^^^^^^

   ???

``カラム *> 重み``
^^^^^^^^^^^^^^^^^^^^

``カラム`` の重みを ``重み`` 分上げます。

未サポート。

``カラム *< 重み``
^^^^^^^^^^^^^^^^^^^^

``カラム`` の重みを ``重み`` 分下げます。

未サポート。

``カラム *~ 重み``
^^^^^^^^^^^^^^^^^^^^

``カラム`` がマッチした場合、文書の検索スコアを ``重み`` 分下げます。

未サポート。
