Kouhei Sutou
null+****@clear*****
Mon Nov 6 17:01:11 JST 2017
Kouhei Sutou 2017-11-06 17:01:11 +0900 (Mon, 06 Nov 2017) New Revision: 0d05547f0e693f9e18698f61d6d53edea809f86b https://github.com/groonga/groonga/commit/0d05547f0e693f9e18698f61d6d53edea809f86b Message: doc logical_range_filter: add dynamic column related documdents Added files: doc/source/example/reference/commands/logical_range_filter/cache_no.log doc/source/example/reference/commands/logical_range_filter/columns_name_flags.log doc/source/example/reference/commands/logical_range_filter/columns_name_stage.log doc/source/example/reference/commands/logical_range_filter/columns_name_type.log doc/source/example/reference/commands/logical_range_filter/columns_name_value.log doc/source/example/reference/commands/logical_range_filter/columns_name_window_group_keys.log doc/source/example/reference/commands/logical_range_filter/columns_name_window_sort_keys.log doc/source/example/reference/commands/logical_range_filter/usage_plugin_register.log doc/source/example/reference/commands/logical_range_filter/usage_setup.log Modified files: doc/locale/ja/LC_MESSAGES/reference.po doc/source/reference/commands/logical_range_filter.rst doc/source/reference/commands/logical_select.rst Modified: doc/locale/ja/LC_MESSAGES/reference.po (+235 -205) =================================================================== --- doc/locale/ja/LC_MESSAGES/reference.po 2017-11-06 16:25:46 +0900 (79af47a22) +++ doc/locale/ja/LC_MESSAGES/reference.po 2017-11-06 17:01:11 +0900 (28aa8b25b) @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 1.2.1\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2017-11-06 16:24+0900\n" +"PO-Revision-Date: 2017-11-06 16:57+0900\n" "Last-Translator: Masafumi Yokoyama <yokoyama �� clear-code.com>\n" "Language-Team: Japanese\n" "Language: ja\n" @@ -7293,23 +7293,37 @@ msgstr "" msgid "" "``logical_range_filter`` is similar to :doc:`logical_select`. Both of them " "searches records from multiples tables and outputs them. " -"``logical_range_filter`` stops searching when requested records are found. :" -"doc:`logical_select` searches all records and outputs only needed records." +"``logical_range_filter`` stops searching when the number of matched records " +"is requested the number of records. :doc:`logical_select` searches all " +"records and outputs only needed records." msgstr "" +"``logical_range_filter`` は :doc:`logical_select` に似ています。どちらも複数" +"のテーブルからレコードを検索し、見つかったレコードを出力します。 " +"``logical_range_filter`` は要求されたレコード数分のレコードが見つかったらそこ" +"で検索を終了します。 :doc:`logical_select` はすべてのレコードを検索し、必要な" +"レコードだけ出力します。" msgid "``logical_range_filter`` has performance merit but some restrictions." msgstr "" +"``logical_range_filter`` の方が性能面で有利ですがいくつか制約があります。" msgid "" "If many records are matched and requested records are small, " "``logical_range_filter`` will be faster than :doc:`logical_select`." msgstr "" +"大量のレコードがマッチし、要求されているレコード数が小さい場合、 " +"``logical_range_filter`` の方が :doc:`logical_select` よりも速いです。" msgid "" "``logical_range_filter`` doesn't support drilldown because drilldown " "requires all matched records. ``logical_range_filter`` may not find all " "matched records. So ``logical_range_filter`` doesn't support drilldown." msgstr "" +"``logical_range_filter`` はドリルダウンをサポートしていません。なぜなら、ドリ" +"ルダウンをするためにはマッチしたレコードがすべて必要だからです。 " +"``logical_range_filter`` はマッチするレコードをすべて検索しないかもしれませ" +"ん。そのため、 ``logical_range_filter`` はドリルダウンをサポートしていませ" +"ん。" msgid "" "You need to :doc:`plugin_register` ``sharding`` plugin because this command " @@ -7412,12 +7426,58 @@ msgstr "" "このコマンドは ``sharding`` プラグインに含まれているので ``sharding`` プラグ" "インを登録する必要があります。" -msgid "TODO: Add examples" +msgid "" +"There are two tables, ``Entries_20150708`` and ``Entries_20150709``, for " +"blog entries." msgstr "" +"ブログエントリー用に ``Entries_20150708`` と ``Entries_20150709`` の2つのテー" +"ブルがあります。" + +msgid "" +"You need to use ``${LOGICAL_TABLE_NAME}_${YYYYMMDD}`` naming rule for table " +"names. In this example, ``LOGICAL_TABLE_NAME`` is ``Entries`` and " +"``YYYYMMDD`` is ``20150708`` or ``20150709``." +msgstr "" +"テーブル名には ``${論理テーブル名}_${YYYYMMDD}`` という命名規則を使う必要があ" +"ります。この例では、 ``論理テーブル名`` は ``Entries`` で ``YYYYMMDD`` は " +"``20150708`` または ``20150709`` です。" + +msgid "" +"An entry has title, created time, content, the number of likes for the entry " +"and tag. Title is key of ``Entries_YYYYMMDD``. Created time is value of " +"``Entries_YYYYMMDD.created_at`` column. Content is value of " +"``Entries_YYYYMMDD.content`` column. The number of likes is value of " +"``Entries_YYYYMMDD.n_likes`` column. Tag is value of ``Entries_YYYYMMDD." +"tag`` column." +msgstr "" +"各エントリはタイトルと作成日時と内容と「いいね!」数、タグを持っています。タ" +"イトルは ``Entries_YYYYMMDD`` のキーとします。作成日時は ``Entries_YYYYMMDD." +"created_at`` カラムの値とします。内容は ``Entries_YYYYMMDD.content`` カラムの" +"値とします。「いいね!」数は ``Entries_YYYYMMDD.n_likes`` カラムの値としま" +"す。タグは ``Entries_YYYYMMDD.tag`` カラムの値とします。" + +msgid "" +"``Entries_YYYYMMDD._key`` column and ``Entries_YYYYMMDD.content`` column are " +"indexed using ``TokenBigram`` tokenizer. So both ``Entries_YYYYMMDD._key`` " +"and ``Entries_YYYYMMDD.content`` are fulltext search ready." +msgstr "" +"``Entries_YYYYMMDD._key`` カラムと ``Entries_YYYYMMDD.content`` カラムには " +"``TokenBigram`` トークナイザーを使ったインデックスを作成します。そのため、 " +"``Entries_YYYYMMDD._key`` と ``Entries_YYYYMMDD.content`` は両方とも全文検索" +"できます。" + +msgid "OK. The schema and data for examples are ready." +msgstr "これで例を示すためのスキーマとデータの準備ができました。" + +msgid "Simple usage" +msgstr "簡単な使い方" msgid "This section describes parameters of ``logical_range_filter``." msgstr "このセクションでは ``logical_range_filter`` の引数について説明します。" +msgid "TODO: Add examples" +msgstr "" + msgid "``order``" msgstr "" @@ -7431,6 +7491,177 @@ msgstr "" "range_indexを使うかどうかを指定します。ただし、この引数はテスト用なので、本番" "で使うべきではありません。" +msgid "Dynamic column related parameters" +msgstr "動的カラム関連の引数" + +msgid "" +"All dynamic column related parameters in :doc:`select` are supported. See :" +"ref:`select-dynamic-column-related-parameters` for details." +msgstr "" +":doc:`select` のすべての動的カラム関連パラメーターをサポートしています。詳細" +"は :ref:`select-dynamic-column-related-parameters` を見てください。" + +msgid "" +"If you use one or more dynamic columns, \"stop searching when enough records " +"are matched in a table\" feature is disabled. ``logical_range_filter`` " +"searches all matched records in a table even when requested the number of " +"matched records is small. It's for supporting window function. Running " +"window function requires all records in a table." +msgstr "" +"動的カラムを1つ以上使うと、「十分なレコードがマッチしたらそのテーブルの検索を" +"切り上げる」機能が無効になります。(「十分なレコードがマッチしたら残りのテー" +"ブルの検索を切り上げる」機能は有効です。) ``logical_range_filter`` は要求さ" +"れているマッチレコード数が小さくても各テーブルですべてのマッチするレコードを" +"検索します。これはウィンドウ関数をサポートするためです。ウィンドウ関数を実行" +"するには同一テーブル内のすべての対象レコードが必要です。" + +msgid "``columns[${NAME}].stage``" +msgstr "" + +msgid "" +"Corresponds to :ref:`select-columns-name-stage` in :doc:`select`. See :ref:" +"`select-columns-name-stage` for details." +msgstr "" +":doc:`select` の :ref:`select-columns-name-stage` に対応しています。詳細は :" +"ref:`select-columns-name-stage` を見てください。" + +msgid "This is a required parameter." +msgstr "必須の引数です。" + +msgid "" +"Here is an example that creates ``is_popular`` column at ``initial`` stage. " +"You can use ``is_popular`` in all parameters such as ``filter`` and " +"``output_columns``:" +msgstr "" +"以下は ``initial`` ステージで ``is_popular`` カラムを作る例です。作成した " +"``is_popular`` カラムは ``filter`` や ``output_columns`` を含むすべてのパラ" +"メーターで使えます。" + +msgid "``columns[${NAME}].flags``" +msgstr "" + +msgid "" +"Corresponds to :ref:`select-columns-name-flags` in :doc:`select`. See :ref:" +"`select-columns-name-flags` for details." +msgstr "" +":doc:`select` の :ref:`select-columns-name-flags` に対応しています。詳細は :" +"ref:`select-columns-name-flags` を見てください。" + +msgid "The default value is ``COLUMN_SCALAR``." +msgstr "デフォルト値は ``COLUMN_SCALAR`` です。" + +msgid "" +"Here is an example that creates a vector column by ``COLUMN_VECTOR`` flags. " +"``plugin_register functions/vector`` is for using :doc:`/reference/functions/" +"vector_new` function:" +msgstr "" +"以下は ``COLUMN_VECTOR`` フラグを指定してベクターカラムを作る例です。 " +"``plugin_register functions/vector`` は :doc:`/reference/functions/" +"vector_new` 関数を使うために実行しています。:" + +msgid "``columns[${NAME}].type``" +msgstr "" + +msgid "" +"Corresponds to :ref:`select-columns-name-type` in :doc:`select`. See :ref:" +"`select-columns-name-type` for details." +msgstr "" +":doc:`select` の :ref:`select-columns-name-type` に対応しています。詳細は :" +"ref:`select-columns-name-type` を見てください。" + +msgid "" +"Here is an example that creates a ``ShortText`` type column. Stored value is " +"casted to ``ShortText`` automatically. In this example, number is casted to " +"``ShortText``:" +msgstr "" +"以下は ``ShortText`` 型のカラムを作る例です。保存された値は自動的に " +"``ShortText`` にキャストされます。この例では数値が ``ShortText`` にキャストさ" +"れています。" + +msgid "``columns[${NAME}].value``" +msgstr "" + +msgid "" +"Corresponds to :ref:`select-columns-name-value` in :doc:`select`. See :ref:" +"`select-columns-name-value` for details." +msgstr "" +":doc:`select` の :ref:`select-columns-name-value` に対応しています。詳細は :" +"ref:`select-columns-name-value` を見てください。" + +msgid "" +"You need to specify :doc:`/reference/window_function` as ``value`` value and " +"other window function related parameters when you use window function. See :" +"ref:`logical-range-filter-window-function-related-parameters` for details." +msgstr "" +"ウィンドウ関数を使う場合は、 ``value`` の値に :doc:`/reference/" +"window_function` を指定し、さらに他のウィンドウ関数関連のパラメーターも指定す" +"る必要があります。詳細は :ref:`logical-range-filter-window-function-related-" +"parameters` を見てください。" + +msgid "" +"Here is an example that creates a new dynamic column that stores the number " +"of characters of content. This example uses :doc:`/reference/functions/" +"string_length` function in ``functions/string`` plugin to compute the number " +"of characters in a string. :doc:`plugin_register` is used to register " +"``functions/string`` plugin:" +msgstr "" +"以下は内容の文字数を格納するための動的カラムを1つ作る例です。この例では文字数" +"を数えるために ``functions/string`` プラグイン内の :doc:`/reference/" +"functions/string_length` 関数を使っています。 ``functions/string`` プラグイン" +"を登録するために :doc:`plugin_register` を使っています。" + +msgid "Window function related parameters" +msgstr "ウィンドウ関数関連の引数" + +msgid "" +"All window function related parameters in :doc:`select` are supported. See :" +"ref:`select-window-function-related-parameters` for details." +msgstr "" +":doc:`select` のすべてのウィンドウ関数関連パラメーターをサポートしています。" +"詳細は :ref:`select-window-function-related-parameters` を見てください。" + +msgid "Window function over multiple tables aren't supported yet." +msgstr "複数のテーブルをまたがったウィンドウ関数はまだサポートしていません。" + +msgid "``columns[${NAME}].window.sort_keys``" +msgstr "" + +msgid "" +"Corresponds to :ref:`select-columns-name-window-sort-keys` in :doc:`select`. " +"See :ref:`select-columns-name-window-sort-keys` for details." +msgstr "" +":doc:`select` の :ref:`select-columns-name-window-sort-keys` に対応していま" +"す。詳細は :ref:`select-columns-name-window-sort-keys` を見てください。" + +msgid "" +"You must specify :ref:`logical-range-filter-columns-name-window-sort-keys` " +"or :ref:`logical-range-filter-columns-name-window-group-keys` to use window " +"function." +msgstr "" +"ウィンドウ関数を使うには :ref:`logical-select-columns-name-window-sort-keys` " +"または :ref:`logical-range-filter-columns-name-window-group-keys` を指定しな" +"ければいけません。" + +msgid "" +"Here is an example that computes cumulative sum per ``Entries.tag``. Each " +"group is sorted by ``Entries._key``:" +msgstr "" +"以下は ``Entries.tag`` 毎に累積和を計算する例です。各グループ内のレコードは " +"``Entries._key`` でソートします。" + +msgid "``columns[${NAME}].window.group_keys``" +msgstr "" + +msgid "" +"Corresponds to :ref:`select-columns-name-window-group-keys` in :doc:" +"`select`. See :ref:`select-columns-name-window-group-keys` for details." +msgstr "" +":doc:`select` の :ref:`select-columns-name-window-group-keys` に対応していま" +"す。詳細は :ref:`select-columns-name-window-group-keys` を見てください。" + +msgid "Here is an example that computes sum per ``Entries.tag``:" +msgstr "以下は ``Entries.tag`` 毎に合計を計算する例です。" + msgid "Cache related parameter" msgstr "キャッシュ関連の引数" @@ -7629,52 +7860,6 @@ msgstr "``query_expander`` はまだサポートしていません。" msgid "``adjuster`` isn't supported yet." msgstr "``adjuster`` はまだサポートしていません。" -msgid "" -"There are two tables, ``Entries_20150708`` and ``Entries_20150709``, for " -"blog entries." -msgstr "" -"ブログエントリー用に ``Entries_20150708`` と ``Entries_20150709`` の2つのテー" -"ブルがあります。" - -msgid "" -"You need to use ``${LOGICAL_TABLE_NAME}_${YYYYMMDD}`` naming rule for table " -"names. In this example, ``LOGICAL_TABLE_NAME`` is ``Entries`` and " -"``YYYYMMDD`` is ``20150708`` or ``20150709``." -msgstr "" -"テーブル名には ``${論理テーブル名}_${YYYYMMDD}`` という命名規則を使う必要があ" -"ります。この例では、 ``論理テーブル名`` は ``Entries`` で ``YYYYMMDD`` は " -"``20150708`` または ``20150709`` です。" - -msgid "" -"An entry has title, created time, content, the number of likes for the entry " -"and tag. Title is key of ``Entries_YYYYMMDD``. Created time is value of " -"``Entries_YYYYMMDD.created_at`` column. Content is value of " -"``Entries_YYYYMMDD.content`` column. The number of likes is value of " -"``Entries_YYYYMMDD.n_likes`` column. Tag is value of ``Entries_YYYYMMDD." -"tag`` column." -msgstr "" -"各エントリはタイトルと作成日時と内容と「いいね!」数、タグを持っています。タ" -"イトルは ``Entries_YYYYMMDD`` のキーとします。作成日時は ``Entries_YYYYMMDD." -"created_at`` カラムの値とします。内容は ``Entries_YYYYMMDD.content`` カラムの" -"値とします。「いいね!」数は ``Entries_YYYYMMDD.n_likes`` カラムの値としま" -"す。タグは ``Entries_YYYYMMDD.tag`` カラムの値とします。" - -msgid "" -"``Entries_YYYYMMDD._key`` column and ``Entries_YYYYMMDD.content`` column are " -"indexed using ``TokenBigram`` tokenizer. So both ``Entries_YYYYMMDD._key`` " -"and ``Entries_YYYYMMDD.content`` are fulltext search ready." -msgstr "" -"``Entries_YYYYMMDD._key`` カラムと ``Entries_YYYYMMDD.content`` カラムには " -"``TokenBigram`` トークナイザーを使ったインデックスを作成します。そのため、 " -"``Entries_YYYYMMDD._key`` と ``Entries_YYYYMMDD.content`` は両方とも全文検索" -"できます。" - -msgid "OK. The schema and data for examples are ready." -msgstr "これで例を示すためのスキーマとデータの準備ができました。" - -msgid "Simple usage" -msgstr "簡単な使い方" - msgid "This section describes parameters of ``logical_select``." msgstr "このセクションでは ``logical_select`` の引数について説明します。" @@ -7916,89 +8101,6 @@ msgstr "" ":doc:`select` の :ref:`select-limit` に対応しています。詳細は :ref:`select-" "limit` を見てください。" -msgid "Dynamic column related parameters" -msgstr "動的カラム関連の引数" - -msgid "" -"All dynamic column related parameters in :doc:`select` are supported. See :" -"ref:`select-dynamic-column-related-parameters` for details." -msgstr "" -":doc:`select` のすべての動的カラム関連パラメーターをサポートしています。詳細" -"は :ref:`select-dynamic-column-related-parameters` を見てください。" - -msgid "``columns[${NAME}].stage``" -msgstr "" - -msgid "" -"Corresponds to :ref:`select-columns-name-stage` in :doc:`select`. See :ref:" -"`select-columns-name-stage` for details." -msgstr "" -":doc:`select` の :ref:`select-columns-name-stage` に対応しています。詳細は :" -"ref:`select-columns-name-stage` を見てください。" - -msgid "This is a required parameter." -msgstr "必須の引数です。" - -msgid "" -"Here is an example that creates ``is_popular`` column at ``initial`` stage. " -"You can use ``is_popular`` in all parameters such as ``filter`` and " -"``output_columns``:" -msgstr "" -"以下は ``initial`` ステージで ``is_popular`` カラムを作る例です。作成した " -"``is_popular`` カラムは ``filter`` や ``output_columns`` を含むすべてのパラ" -"メーターで使えます。" - -msgid "``columns[${NAME}].flags``" -msgstr "" - -msgid "" -"Corresponds to :ref:`select-columns-name-flags` in :doc:`select`. See :ref:" -"`select-columns-name-flags` for details." -msgstr "" -":doc:`select` の :ref:`select-columns-name-flags` に対応しています。詳細は :" -"ref:`select-columns-name-flags` を見てください。" - -msgid "The default value is ``COLUMN_SCALAR``." -msgstr "デフォルト値は ``COLUMN_SCALAR`` です。" - -msgid "" -"Here is an example that creates a vector column by ``COLUMN_VECTOR`` flags. " -"``plugin_register functions/vector`` is for using :doc:`/reference/functions/" -"vector_new` function:" -msgstr "" -"以下は ``COLUMN_VECTOR`` フラグを指定してベクターカラムを作る例です。 " -"``plugin_register functions/vector`` は :doc:`/reference/functions/" -"vector_new` 関数を使うために実行しています。:" - -msgid "``columns[${NAME}].type``" -msgstr "" - -msgid "" -"Corresponds to :ref:`select-columns-name-type` in :doc:`select`. See :ref:" -"`select-columns-name-type` for details." -msgstr "" -":doc:`select` の :ref:`select-columns-name-type` に対応しています。詳細は :" -"ref:`select-columns-name-type` を見てください。" - -msgid "" -"Here is an example that creates a ``ShortText`` type column. Stored value is " -"casted to ``ShortText`` automatically. In this example, number is casted to " -"``ShortText``:" -msgstr "" -"以下は ``ShortText`` 型のカラムを作る例です。保存された値は自動的に " -"``ShortText`` にキャストされます。この例では数値が ``ShortText`` にキャストさ" -"れています。" - -msgid "``columns[${NAME}].value``" -msgstr "" - -msgid "" -"Corresponds to :ref:`select-columns-name-value` in :doc:`select`. See :ref:" -"`select-columns-name-value` for details." -msgstr "" -":doc:`select` の :ref:`select-columns-name-value` に対応しています。詳細は :" -"ref:`select-columns-name-value` を見てください。" - msgid "" "You need to specify :doc:`/reference/window_function` as ``value`` value and " "other window function related parameters when you use window function. See :" @@ -8010,38 +8112,6 @@ msgstr "" "parameters` を見てください。" msgid "" -"Here is an example that creates a new dynamic column that stores the number " -"of characters of content. This example uses :doc:`/reference/functions/" -"string_length` function in ``functions/string`` plugin to compute the number " -"of characters in a string. :doc:`plugin_register` is used to register " -"``functions/string`` plugin:" -msgstr "" -"以下は内容の文字数を格納するための動的カラムを1つ作る例です。この例では文字数" -"を数えるために ``functions/string`` プラグイン内の :doc:`/reference/" -"functions/string_length` 関数を使っています。 ``functions/string`` プラグイン" -"を登録するために :doc:`plugin_register` を使っています。" - -msgid "Window function related parameters" -msgstr "ウィンドウ関数関連の引数" - -msgid "" -"All window function related parameters in :doc:`select` are supported. See :" -"ref:`select-window-function-related-parameters` for details." -msgstr "" -":doc:`select` のすべてのウィンドウ関数関連パラメーターをサポートしています。" -"詳細は :ref:`select-window-function-related-parameters` を見てください。" - -msgid "``columns[${NAME}].window.sort_keys``" -msgstr "" - -msgid "" -"Corresponds to :ref:`select-columns-name-window-sort-keys` in :doc:`select`. " -"See :ref:`select-columns-name-window-sort-keys` for details." -msgstr "" -":doc:`select` の :ref:`select-columns-name-window-sort-keys` に対応していま" -"す。詳細は :ref:`select-columns-name-window-sort-keys` を見てください。" - -msgid "" "You must specify :ref:`logical-select-columns-name-window-sort-keys` or :ref:" "`logical-select-columns-name-window-group-keys` to use window function." msgstr "" @@ -8049,26 +8119,6 @@ msgstr "" "または :ref:`logical-select-columns-name-window-group-keys` を指定しなければ" "いけません。" -msgid "" -"Here is an example that computes cumulative sum per ``Entries.tag``. Each " -"group is sorted by ``Entries._key``:" -msgstr "" -"以下は ``Entries.tag`` 毎に累積和を計算する例です。各グループ内のレコードは " -"``Entries._key`` でソートします。" - -msgid "``columns[${NAME}].window.group_keys``" -msgstr "" - -msgid "" -"Corresponds to :ref:`select-columns-name-window-group-keys` in :doc:" -"`select`. See :ref:`select-columns-name-window-group-keys` for details." -msgstr "" -":doc:`select` の :ref:`select-columns-name-window-group-keys` に対応していま" -"す。詳細は :ref:`select-columns-name-window-group-keys` を見てください。" - -msgid "Here is an example that computes sum per ``Entries.tag``:" -msgstr "以下は ``Entries.tag`` 毎に合計を計算する例です。" - msgid "Drilldown related parameters" msgstr "ドリルダウン関連の引数" @@ -27162,23 +27212,3 @@ msgstr "" msgid "``window_sum``" msgstr "" - -#~ msgid "There are two kind of index columns which you can specify." -#~ msgstr "2つの種類のインデックスカラムを指定することができます。" - -#~ msgid "" -#~ "Let's learn about ``logical_select`` usage with examples. This section " -#~ "shows many popular usages." -#~ msgstr "" -#~ "例を使いながら ``logical_select`` の使い方を学びましょう。このセクションで" -#~ "はよく使われる使い方を紹介します。" - -#~ msgid "``cache`` isn't supported yet." -#~ msgstr "``cache`` はまだサポートしていません。" - -#~ msgid "" -#~ "Register ``sharding`` plugin to use ``logical_range_filter`` command in " -#~ "advance." -#~ msgstr "" -#~ "``logical_range_filter`` コマンドを使うには事前に ``sharding`` プラグイン" -#~ "を登録します。" Added: doc/source/example/reference/commands/logical_range_filter/cache_no.log (+72 -0) 100644 =================================================================== --- /dev/null +++ doc/source/example/reference/commands/logical_range_filter/cache_no.log 2017-11-06 17:01:11 +0900 (223e7e943) @@ -0,0 +1,72 @@ +Execution example:: + + logical_range_filter \ + --logical_table Entries \ + --shard_key created_at \ + --cache no + # [ + # [ + # 0, + # 1337566253.89858, + # 0.000355720520019531 + # ], + # [ + # [ + # [ + # "_key", + # "ShortText" + # ], + # [ + # "content", + # "Text" + # ], + # [ + # "created_at", + # "Time" + # ], + # [ + # "n_likes", + # "UInt32" + # ], + # [ + # "tag", + # "ShortText" + # ] + # ], + # [ + # "The first post!", + # "Welcome! This is my first post!", + # 1436281200.0, + # 5, + # "Hello" + # ], + # [ + # "Groonga", + # "I started to use Groonga. It's very fast!", + # 1436284800.0, + # 10, + # "Groonga" + # ], + # [ + # "Mroonga", + # "I also started to use Mroonga. It's also very fast! Really fast!", + # 1436288400.0, + # 15, + # "Groonga" + # ], + # [ + # "Good-bye Senna", + # "I migrated all Senna system!", + # 1436367600.0, + # 3, + # "Senna" + # ], + # [ + # "Good-bye Tritonn", + # "I also migrated all Tritonn system!", + # 1436371200.0, + # 3, + # "Senna" + # ] + # ] + # ] Added: doc/source/example/reference/commands/logical_range_filter/columns_name_flags.log (+71 -0) 100644 =================================================================== --- /dev/null +++ doc/source/example/reference/commands/logical_range_filter/columns_name_flags.log 2017-11-06 17:01:11 +0900 (6e2d0617d) @@ -0,0 +1,71 @@ +Execution example:: + + plugin_register functions/vector + # [[0, 1337566253.89858, 0.000355720520019531], true] + logical_range_filter \ + --logical_table Entries \ + --shard_key created_at \ + --columns[vector].stage initial \ + --columns[vector].flags COLUMN_VECTOR \ + --columns[vector].type UInt32 \ + --columns[vector].value 'vector_new(1, 2, 3)' \ + --output_columns _id,vector + # [ + # [ + # 0, + # 1337566253.89858, + # 0.000355720520019531 + # ], + # [ + # [ + # [ + # "_id", + # "UInt32" + # ], + # [ + # "vector", + # "UInt32" + # ] + # ], + # [ + # 1, + # [ + # 1, + # 2, + # 3 + # ] + # ], + # [ + # 2, + # [ + # 1, + # 2, + # 3 + # ] + # ], + # [ + # 3, + # [ + # 1, + # 2, + # 3 + # ] + # ], + # [ + # 1, + # [ + # 1, + # 2, + # 3 + # ] + # ], + # [ + # 2, + # [ + # 1, + # 2, + # 3 + # ] + # ] + # ] + # ] Added: doc/source/example/reference/commands/logical_range_filter/columns_name_stage.log (+43 -0) 100644 =================================================================== --- /dev/null +++ doc/source/example/reference/commands/logical_range_filter/columns_name_stage.log 2017-11-06 17:01:11 +0900 (aca2db09c) @@ -0,0 +1,43 @@ +Execution example:: + + logical_range_filter \ + --logical_table Entries \ + --shard_key created_at \ + --columns[is_popular].stage initial \ + --columns[is_popular].type Bool \ + --columns[is_popular].value 'n_likes >= 10' \ + --filter is_popular \ + --output_columns _id,is_popular,n_likes + # [ + # [ + # 0, + # 1337566253.89858, + # 0.000355720520019531 + # ], + # [ + # [ + # [ + # "_id", + # "UInt32" + # ], + # [ + # "is_popular", + # "Bool" + # ], + # [ + # "n_likes", + # "UInt32" + # ] + # ], + # [ + # 2, + # true, + # 10 + # ], + # [ + # 3, + # true, + # 15 + # ] + # ] + # ] Added: doc/source/example/reference/commands/logical_range_filter/columns_name_type.log (+57 -0) 100644 =================================================================== --- /dev/null +++ doc/source/example/reference/commands/logical_range_filter/columns_name_type.log 2017-11-06 17:01:11 +0900 (e0ac00fb5) @@ -0,0 +1,57 @@ +Execution example:: + + logical_range_filter \ + --logical_table Entries \ + --shard_key created_at \ + --columns[n_likes_string].stage initial \ + --columns[n_likes_string].type ShortText \ + --columns[n_likes_string].value n_likes \ + --output_columns _id,n_likes,n_likes_string + # [ + # [ + # 0, + # 1337566253.89858, + # 0.000355720520019531 + # ], + # [ + # [ + # [ + # "_id", + # "UInt32" + # ], + # [ + # "n_likes", + # "UInt32" + # ], + # [ + # "n_likes_string", + # "ShortText" + # ] + # ], + # [ + # 1, + # 5, + # "5" + # ], + # [ + # 2, + # 10, + # "10" + # ], + # [ + # 3, + # 15, + # "15" + # ], + # [ + # 1, + # 3, + # "3" + # ], + # [ + # 2, + # 3, + # "3" + # ] + # ] + # ] Added: doc/source/example/reference/commands/logical_range_filter/columns_name_value.log (+59 -0) 100644 =================================================================== --- /dev/null +++ doc/source/example/reference/commands/logical_range_filter/columns_name_value.log 2017-11-06 17:01:11 +0900 (4856e6e9f) @@ -0,0 +1,59 @@ +Execution example:: + + plugin_register functions/string + # [[0, 1337566253.89858, 0.000355720520019531], true] + logical_range_filter \ + --logical_table Entries \ + --shard_key created_at \ + --columns[content_length].stage initial \ + --columns[content_length].type UInt32 \ + --columns[content_length].value 'string_length(content)' \ + --output_columns _id,content,content_length + # [ + # [ + # 0, + # 1337566253.89858, + # 0.000355720520019531 + # ], + # [ + # [ + # [ + # "_id", + # "UInt32" + # ], + # [ + # "content", + # "Text" + # ], + # [ + # "content_length", + # "UInt32" + # ] + # ], + # [ + # 1, + # "Welcome! This is my first post!", + # 31 + # ], + # [ + # 2, + # "I started to use Groonga. It's very fast!", + # 41 + # ], + # [ + # 3, + # "I also started to use Mroonga. It's also very fast! Really fast!", + # 64 + # ], + # [ + # 1, + # "I migrated all Senna system!", + # 28 + # ], + # [ + # 2, + # "I also migrated all Tritonn system!", + # 35 + # ] + # ] + # ] Added: doc/source/example/reference/commands/logical_range_filter/columns_name_window_group_keys.log (+68 -0) 100644 =================================================================== --- /dev/null +++ doc/source/example/reference/commands/logical_range_filter/columns_name_window_group_keys.log 2017-11-06 17:01:11 +0900 (629d046f3) @@ -0,0 +1,68 @@ +Execution example:: + + logical_range_filter \ + --logical_table Entries \ + --shard_key created_at \ + --columns[n_likes_sum_per_tag].stage initial \ + --columns[n_likes_sum_per_tag].type UInt32 \ + --columns[n_likes_sum_per_tag].value 'window_sum(n_likes)' \ + --columns[n_likes_sum_per_tag].window.group_keys tag \ + --sort_keys _key \ + --output_columns tag,_key,n_likes,n_likes_sum_per_tag + # [ + # [ + # 0, + # 1337566253.89858, + # 0.000355720520019531 + # ], + # [ + # [ + # [ + # "tag", + # "ShortText" + # ], + # [ + # "_key", + # "ShortText" + # ], + # [ + # "n_likes", + # "UInt32" + # ], + # [ + # "n_likes_sum_per_tag", + # "UInt32" + # ] + # ], + # [ + # "Hello", + # "The first post!", + # 5, + # 5 + # ], + # [ + # "Groonga", + # "Groonga", + # 10, + # 25 + # ], + # [ + # "Groonga", + # "Mroonga", + # 15, + # 25 + # ], + # [ + # "Senna", + # "Good-bye Senna", + # 3, + # 6 + # ], + # [ + # "Senna", + # "Good-bye Tritonn", + # 3, + # 6 + # ] + # ] + # ] Added: doc/source/example/reference/commands/logical_range_filter/columns_name_window_sort_keys.log (+69 -0) 100644 =================================================================== --- /dev/null +++ doc/source/example/reference/commands/logical_range_filter/columns_name_window_sort_keys.log 2017-11-06 17:01:11 +0900 (855f458fe) @@ -0,0 +1,69 @@ +Execution example:: + + logical_range_filter \ + --logical_table Entries \ + --shard_key created_at \ + --columns[n_likes_cumulative_sum_per_tag].stage initial \ + --columns[n_likes_cumulative_sum_per_tag].type UInt32 \ + --columns[n_likes_cumulative_sum_per_tag].value 'window_sum(n_likes)' \ + --columns[n_likes_cumulative_sum_per_tag].window.sort_keys _key \ + --columns[n_likes_cumulative_sum_per_tag].window.group_keys tag \ + --sort_keys _key \ + --output_columns tag,_key,n_likes,n_likes_cumulative_sum_per_tag + # [ + # [ + # 0, + # 1337566253.89858, + # 0.000355720520019531 + # ], + # [ + # [ + # [ + # "tag", + # "ShortText" + # ], + # [ + # "_key", + # "ShortText" + # ], + # [ + # "n_likes", + # "UInt32" + # ], + # [ + # "n_likes_cumulative_sum_per_tag", + # "UInt32" + # ] + # ], + # [ + # "Hello", + # "The first post!", + # 5, + # 5 + # ], + # [ + # "Groonga", + # "Groonga", + # 10, + # 10 + # ], + # [ + # "Groonga", + # "Mroonga", + # 15, + # 25 + # ], + # [ + # "Senna", + # "Good-bye Senna", + # 3, + # 3 + # ], + # [ + # "Senna", + # "Good-bye Tritonn", + # 3, + # 6 + # ] + # ] + # ] Added: doc/source/example/reference/commands/logical_range_filter/usage_plugin_register.log (+4 -0) 100644 =================================================================== --- /dev/null +++ doc/source/example/reference/commands/logical_range_filter/usage_plugin_register.log 2017-11-06 17:01:11 +0900 (6315f95d1) @@ -0,0 +1,4 @@ +Execution example:: + + plugin_register sharding + # [[0, 1337566253.89858, 0.000355720520019531], true] Added: doc/source/example/reference/commands/logical_range_filter/usage_setup.log (+71 -0) 100644 =================================================================== --- /dev/null +++ doc/source/example/reference/commands/logical_range_filter/usage_setup.log 2017-11-06 17:01:11 +0900 (d72ab71be) @@ -0,0 +1,71 @@ +Execution example:: + + table_create Entries_20150708 TABLE_HASH_KEY ShortText + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Entries_20150708 created_at COLUMN_SCALAR Time + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Entries_20150708 content COLUMN_SCALAR Text + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Entries_20150708 n_likes COLUMN_SCALAR UInt32 + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Entries_20150708 tag COLUMN_SCALAR ShortText + # [[0, 1337566253.89858, 0.000355720520019531], true] + table_create Entries_20150709 TABLE_HASH_KEY ShortText + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Entries_20150709 created_at COLUMN_SCALAR Time + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Entries_20150709 content COLUMN_SCALAR Text + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Entries_20150709 n_likes COLUMN_SCALAR UInt32 + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Entries_20150709 tag COLUMN_SCALAR ShortText + # [[0, 1337566253.89858, 0.000355720520019531], true] + table_create Terms TABLE_PAT_KEY ShortText \ + --default_tokenizer TokenBigram \ + --normalizer NormalizerAuto + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Terms entries_key_index_20150708 \ + COLUMN_INDEX|WITH_POSITION Entries_20150708 _key + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Terms entries_content_index_20150708 \ + COLUMN_INDEX|WITH_POSITION Entries_20150708 content + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Terms entries_key_index_20150709 \ + COLUMN_INDEX|WITH_POSITION Entries_20150709 _key + # [[0, 1337566253.89858, 0.000355720520019531], true] + column_create Terms entries_content_index_20150709 \ + COLUMN_INDEX|WITH_POSITION Entries_20150709 content + # [[0, 1337566253.89858, 0.000355720520019531], true] + load --table Entries_20150708 + [ + {"_key": "The first post!", + "created_at": "2015/07/08 00:00:00", + "content": "Welcome! This is my first post!", + "n_likes": 5, + "tag": "Hello"}, + {"_key": "Groonga", + "created_at": "2015/07/08 01:00:00", + "content": "I started to use Groonga. It's very fast!", + "n_likes": 10, + "tag": "Groonga"}, + {"_key": "Mroonga", + "created_at": "2015/07/08 02:00:00", + "content": "I also started to use Mroonga. It's also very fast! Really fast!", + "n_likes": 15, + "tag": "Groonga"} + ] + # [[0, 1337566253.89858, 0.000355720520019531], 3] + load --table Entries_20150709 + [ + {"_key": "Good-bye Senna", + "created_at": "2015/07/09 00:00:00", + "content": "I migrated all Senna system!", + "n_likes": 3, + "tag": "Senna"}, + {"_key": "Good-bye Tritonn", + "created_at": "2015/07/09 01:00:00", + "content": "I also migrated all Tritonn system!", + "n_likes": 3, + "tag": "Senna"} + ] + # [[0, 1337566253.89858, 0.000355720520019531], 2] Modified: doc/source/reference/commands/logical_range_filter.rst (+366 -7) =================================================================== --- doc/source/reference/commands/logical_range_filter.rst 2017-11-06 16:25:46 +0900 (208f1ff3d) +++ doc/source/reference/commands/logical_range_filter.rst 2017-11-06 17:01:11 +0900 (8fd803055) @@ -13,7 +13,29 @@ Summary .. versionadded:: 5.0.0 -TODO: Write summary +``logical_range_filter`` is a sharding version of +:doc:`range_filter`. ``logical_range_filter`` searches records from +multiple tables and outputs them. + +``logical_range_filter`` is similar to :doc:`logical_select`. Both of +them searches records from multiples tables and outputs +them. ``logical_range_filter`` stops searching when the number of +matched records is requested the number of +records. :doc:`logical_select` searches all records and outputs only +needed records. + +``logical_range_filter`` has performance merit but some restrictions. + +If many records are matched and requested records are small, +``logical_range_filter`` will be faster than :doc:`logical_select`. + +``logical_range_filter`` doesn't support drilldown because drilldown +requires all matched records. ``logical_range_filter`` may not find +all matched records. So ``logical_range_filter`` doesn't support +drilldown. + +You need to :doc:`plugin_register` ``sharding`` plugin because +this command is included in ``sharding`` plugin. Syntax ------ @@ -44,15 +66,139 @@ Here are parameters that can be only used as named parameters: * ``cache=no`` +.. versionadded:: 7.0.9 + + This command has the following named parameters for dynamic columns: + + * ``columns[${NAME}].stage=null`` + * ``columns[${NAME}].flags=COLUMN_SCALAR`` + * ``columns[${NAME}].type=null`` + * ``columns[${NAME}].value=null`` + * ``columns[${NAME}].window.sort_keys=null`` + * ``columns[${NAME}].window.group_keys=null`` + + You can use one or more alphabets, digits, ``_`` for ``${NAME}``. For + example, ``column1`` is a valid ``${NAME}``. This is the same rule as + normal column. See also :ref:`column-create-name`. + + Parameters that have the same ``${NAME}`` are grouped. + + For example, the following parameters specify one dynamic column: + + * ``--columns[name].stage initial`` + * ``--columns[name].type UInt32`` + * ``--columns[name].value 29`` + + The following parameters specify two dynamic columns: + + * ``--columns[name1].stage initial`` + * ``--columns[name1].type UInt32`` + * ``--columns[name1].value 29`` + * ``--columns[name2].stage filtered`` + * ``--columns[name2].type Float`` + * ``--columns[name2].value '_score * 0.1'`` + Usage ----- -Register ``sharding`` plugin to use ``logical_range_filter`` command in advance. +Let's learn about usage with examples. This section shows many popular +usages. + +You need to register ``sharding`` plugin because this command is +included in ``sharding`` plugin. .. groonga-command +.. include:: ../../example/reference/commands/logical_range_filter/usage_plugin_register.log .. plugin_register sharding -TODO: Add examples +Here are a schema definition and sample data to show usage. + +.. groonga-command +.. include:: ../../example/reference/commands/logical_range_filter/usage_setup.log +.. table_create Entries_20150708 TABLE_HASH_KEY ShortText +.. column_create Entries_20150708 created_at COLUMN_SCALAR Time +.. column_create Entries_20150708 content COLUMN_SCALAR Text +.. column_create Entries_20150708 n_likes COLUMN_SCALAR UInt32 +.. column_create Entries_20150708 tag COLUMN_SCALAR ShortText +.. +.. table_create Entries_20150709 TABLE_HASH_KEY ShortText +.. column_create Entries_20150709 created_at COLUMN_SCALAR Time +.. column_create Entries_20150709 content COLUMN_SCALAR Text +.. column_create Entries_20150709 n_likes COLUMN_SCALAR UInt32 +.. column_create Entries_20150709 tag COLUMN_SCALAR ShortText +.. +.. table_create Terms TABLE_PAT_KEY ShortText \ +.. --default_tokenizer TokenBigram \ +.. --normalizer NormalizerAuto +.. column_create Terms entries_key_index_20150708 \ +.. COLUMN_INDEX|WITH_POSITION Entries_20150708 _key +.. column_create Terms entries_content_index_20150708 \ +.. COLUMN_INDEX|WITH_POSITION Entries_20150708 content +.. column_create Terms entries_key_index_20150709 \ +.. COLUMN_INDEX|WITH_POSITION Entries_20150709 _key +.. column_create Terms entries_content_index_20150709 \ +.. COLUMN_INDEX|WITH_POSITION Entries_20150709 content +.. +.. load --table Entries_20150708 +.. [ +.. {"_key": "The first post!", +.. "created_at": "2015/07/08 00:00:00", +.. "content": "Welcome! This is my first post!", +.. "n_likes": 5, +.. "tag": "Hello"}, +.. {"_key": "Groonga", +.. "created_at": "2015/07/08 01:00:00", +.. "content": "I started to use Groonga. It's very fast!", +.. "n_likes": 10, +.. "tag": "Groonga"}, +.. {"_key": "Mroonga", +.. "created_at": "2015/07/08 02:00:00", +.. "content": "I also started to use Mroonga. It's also very fast! Really fast!", +.. "n_likes": 15, +.. "tag": "Groonga"} +.. ] +.. +.. load --table Entries_20150709 +.. [ +.. {"_key": "Good-bye Senna", +.. "created_at": "2015/07/09 00:00:00", +.. "content": "I migrated all Senna system!", +.. "n_likes": 3, +.. "tag": "Senna"}, +.. {"_key": "Good-bye Tritonn", +.. "created_at": "2015/07/09 01:00:00", +.. "content": "I also migrated all Tritonn system!", +.. "n_likes": 3, +.. "tag": "Senna"} +.. ] + +There are two tables, ``Entries_20150708`` and ``Entries_20150709``, +for blog entries. + +.. note:: + + You need to use ``${LOGICAL_TABLE_NAME}_${YYYYMMDD}`` naming rule + for table names. In this example, ``LOGICAL_TABLE_NAME`` is + ``Entries`` and ``YYYYMMDD`` is ``20150708`` or ``20150709``. + +An entry has title, created time, content, the number of likes for the +entry and tag. Title is key of ``Entries_YYYYMMDD``. Created time is +value of ``Entries_YYYYMMDD.created_at`` column. Content is value of +``Entries_YYYYMMDD.content`` column. The number of likes is value of +``Entries_YYYYMMDD.n_likes`` column. Tag is value of +``Entries_YYYYMMDD.tag`` column. + +``Entries_YYYYMMDD._key`` column and ``Entries_YYYYMMDD.content`` +column are indexed using ``TokenBigram`` tokenizer. So both +``Entries_YYYYMMDD._key`` and ``Entries_YYYYMMDD.content`` are +fulltext search ready. + +OK. The schema and data for examples are ready. + +Simple usage +^^^^^^^^^^^^ + +TODO Parameters ---------- @@ -147,6 +293,216 @@ Note that it's a parameter for test. It should not be used for production. TODO: Add examples +.. _logical-range-filter-dynamic-column-related-parameters: + +Dynamic column related parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. versionadded:: 7.0.9 + +All dynamic column related parameters in :doc:`select` are +supported. See :ref:`select-dynamic-column-related-parameters` for +details. + +If you use one or more dynamic columns, "stop searching when enough +records are matched in a table" feature is disabled. ("Stop searching +against rest tables when enough records are matched" is still +enabled.) ``logical_range_filter`` searches all matched records in a +table even when requested the number of matched records is small. It's +for supporting window function. Running window function requires all +target records in a table. + +.. _logical-range-filter-columns-name-stage: + +``columns[${NAME}].stage`` +"""""""""""""""""""""""""" + +.. versionadded:: 7.0.9 + +Corresponds to :ref:`select-columns-name-stage` in :doc:`select`. See +:ref:`select-columns-name-stage` for details. + +This is a required parameter. + +Here is an example that creates ``is_popular`` column at ``initial`` +stage. You can use ``is_popular`` in all parameters such as ``filter`` +and ``output_columns``: + +.. groonga-command +.. include:: ../../example/reference/commands/logical_range_filter/columns_name_stage.log +.. logical_range_filter \ +.. --logical_table Entries \ +.. --shard_key created_at \ +.. --columns[is_popular].stage initial \ +.. --columns[is_popular].type Bool \ +.. --columns[is_popular].value 'n_likes >= 10' \ +.. --filter is_popular \ +.. --output_columns _id,is_popular,n_likes + +.. _logical-range-filter-columns-name-flags: + +``columns[${NAME}].flags`` +"""""""""""""""""""""""""" + +.. versionadded:: 7.0.9 + +Corresponds to :ref:`select-columns-name-flags` in :doc:`select`. See +:ref:`select-columns-name-flags` for details. + +The default value is ``COLUMN_SCALAR``. + +Here is an example that creates a vector column by ``COLUMN_VECTOR`` +flags. ``plugin_register functions/vector`` is for using +:doc:`/reference/functions/vector_new` function: + +.. groonga-command +.. include:: ../../example/reference/commands/logical_range_filter/columns_name_flags.log +.. plugin_register functions/vector +.. logical_range_filter \ +.. --logical_table Entries \ +.. --shard_key created_at \ +.. --columns[vector].stage initial \ +.. --columns[vector].flags COLUMN_VECTOR \ +.. --columns[vector].type UInt32 \ +.. --columns[vector].value 'vector_new(1, 2, 3)' \ +.. --output_columns _id,vector + +.. _logical-range-filter-columns-name-type: + +``columns[${NAME}].type`` +""""""""""""""""""""""""" + +.. versionadded:: 7.0.9 + +Corresponds to :ref:`select-columns-name-type` in :doc:`select`. See +:ref:`select-columns-name-type` for details. + +This is a required parameter. + +Here is an example that creates a ``ShortText`` type column. Stored +value is casted to ``ShortText`` automatically. In this example, +number is casted to ``ShortText``: + +.. groonga-command +.. include:: ../../example/reference/commands/logical_range_filter/columns_name_type.log +.. logical_range_filter \ +.. --logical_table Entries \ +.. --shard_key created_at \ +.. --columns[n_likes_string].stage initial \ +.. --columns[n_likes_string].type ShortText \ +.. --columns[n_likes_string].value n_likes \ +.. --output_columns _id,n_likes,n_likes_string + +.. _logical-range-filter-columns-name-value: + +``columns[${NAME}].value`` +"""""""""""""""""""""""""" + +.. versionadded:: 7.0.9 + +Corresponds to :ref:`select-columns-name-value` in :doc:`select`. See +:ref:`select-columns-name-value` for details. + +You need to specify :doc:`/reference/window_function` as ``value`` +value and other window function related parameters when you use window +function. See :ref:`logical-range-filter-window-function-related-parameters` +for details. + +This is a required parameter. + +Here is an example that creates a new dynamic column that stores the +number of characters of content. This example uses +:doc:`/reference/functions/string_length` function in +``functions/string`` plugin to compute the number of characters in a +string. :doc:`plugin_register` is used to register +``functions/string`` plugin: + +.. groonga-command +.. include:: ../../example/reference/commands/logical_range_filter/columns_name_value.log +.. plugin_register functions/string +.. logical_range_filter \ +.. --logical_table Entries \ +.. --shard_key created_at \ +.. --columns[content_length].stage initial \ +.. --columns[content_length].type UInt32 \ +.. --columns[content_length].value 'string_length(content)' \ +.. --output_columns _id,content,content_length + +.. _logical-range-filter-window-function-related-parameters: + +Window function related parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. versionadded:: 7.0.9 + +All window function related parameters in :doc:`select` are +supported. See :ref:`select-window-function-related-parameters` for +details. + +.. note:: + + Window function over multiple tables aren't supported yet. + +.. _logical-range-filter-columns-name-window-sort-keys: + +``columns[${NAME}].window.sort_keys`` +""""""""""""""""""""""""""""""""""""" + +.. versionadded:: 7.0.9 + +Corresponds to :ref:`select-columns-name-window-sort-keys` in +:doc:`select`. See :ref:`select-columns-name-window-sort-keys` for +details. + +You must specify :ref:`logical-range-filter-columns-name-window-sort-keys` +or :ref:`logical-range-filter-columns-name-window-group-keys` to use window +function. + +Here is an example that computes cumulative sum per +``Entries.tag``. Each group is sorted by ``Entries._key``: + +.. groonga-command +.. include:: ../../example/reference/commands/logical_range_filter/columns_name_window_sort_keys.log +.. logical_range_filter \ +.. --logical_table Entries \ +.. --shard_key created_at \ +.. --columns[n_likes_cumulative_sum_per_tag].stage initial \ +.. --columns[n_likes_cumulative_sum_per_tag].type UInt32 \ +.. --columns[n_likes_cumulative_sum_per_tag].value 'window_sum(n_likes)' \ +.. --columns[n_likes_cumulative_sum_per_tag].window.sort_keys _key \ +.. --columns[n_likes_cumulative_sum_per_tag].window.group_keys tag \ +.. --sort_keys _key \ +.. --output_columns tag,_key,n_likes,n_likes_cumulative_sum_per_tag + +.. _logical-range-filter-columns-name-window-group-keys: + +``columns[${NAME}].window.group_keys`` +"""""""""""""""""""""""""""""""""""""" + +.. versionadded:: 7.0.9 + +Corresponds to :ref:`select-columns-name-window-group-keys` in +:doc:`select`. See :ref:`select-columns-name-window-group-keys` for +details. + +You must specify :ref:`logical-range-filter-columns-name-window-sort-keys` +or :ref:`logical-range-filter-columns-name-window-group-keys` to use window +function. + +Here is an example that computes sum per ``Entries.tag``: + +.. groonga-command +.. include:: ../../example/reference/commands/logical_range_filter/columns_name_window_group_keys.log +.. logical_range_filter \ +.. --logical_table Entries \ +.. --shard_key created_at \ +.. --columns[n_likes_sum_per_tag].stage initial \ +.. --columns[n_likes_sum_per_tag].type UInt32 \ +.. --columns[n_likes_sum_per_tag].value 'window_sum(n_likes)' \ +.. --columns[n_likes_sum_per_tag].window.group_keys tag \ +.. --sort_keys _key \ +.. --output_columns tag,_key,n_likes,n_likes_sum_per_tag + Cache related parameter ^^^^^^^^^^^^^^^^^^^^^^^ @@ -177,11 +533,14 @@ Here are available values: TODO: Add examples -.. Here is an example to disable caching the result of this query: +Here is an example to disable caching the result of this query: -.. .. groonga-command -.. .. include:: ../../example/reference/commands/logical_range_filter/cache_no.log -.. .. logical_range_filter ... --cache no +.. groonga-command +.. include:: ../../example/reference/commands/logical_range_filter/cache_no.log +.. logical_range_filter \ +.. --logical_table Entries \ +.. --shard_key created_at \ +.. --cache no The default value is ``yes``. Modified: doc/source/reference/commands/logical_select.rst (+4 -0) =================================================================== --- doc/source/reference/commands/logical_select.rst 2017-11-06 16:25:46 +0900 (c19085e4c) +++ doc/source/reference/commands/logical_select.rst 2017-11-06 17:01:11 +0900 (1eaf447ed) @@ -756,6 +756,10 @@ All window function related parameters in :doc:`select` are supported. See :ref:`select-window-function-related-parameters` for details. +.. note:: + + Window function over multiple tables aren't supported yet. + .. _logical-select-columns-name-window-sort-keys: ``columns[${NAME}].window.sort_keys`` -------------- next part -------------- HTML����������������������������... URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20171106/81c45c8b/attachment-0001.htm