本文へスキップ
Ctrl+K
Groonga v15.1.0 documentation - Home Groonga v15.1.0 documentation - Home
  • GitHub
  • Twitter
  • Blog
  • GitHub
  • Twitter
  • Blog

セクションナビゲーション

  • 7.1. 実行ファイル
    • 7.1.1. grndb
    • 7.1.2. grnslap
    • 7.1.3. groonga 実行ファイル
    • 7.1.4. groonga-benchmark
    • 7.1.5. groonga-httpd
    • 7.1.6. Groonga HTTPサーバー
    • 7.1.7. groonga-suggest-create-dataset
    • 7.1.8. groonga-suggest-httpd
    • 7.1.9. groonga-suggest-learner
  • 7.2. 出力
  • 7.3. コマンド
    • 7.3.1. コマンドバージョン
    • 7.3.2. 並列実行
    • 7.3.3. 出力形式
    • 7.3.4. トレースログの出力
    • 7.3.5. プリティープリント
    • 7.3.6. リクエストID
    • 7.3.7. リクエストタイムアウト
    • 7.3.8. リターンコード
      • 7.3.8.3.1. -2: GRN_OPERATION_NOT_PERMITTED
      • 7.3.8.3.2. -3: GRN_NO_SUCH_FILE_OR_DIRECTORY
      • 7.3.8.3.3. -6: GRN_INPUT_OUTPUT_ERROR
      • 7.3.8.3.4. -13: GRN_NOT_ENOUGH_SPACE
      • 7.3.8.3.5. -22: GRN_INVALID_ARGUMENT
      • 7.3.8.3.6. -34: GRN_RESOURCE_DEADLOCK_AVOIDED
    • 7.3.9. cache_limit
    • 7.3.10. check
    • 7.3.11. clearlock
    • 7.3.12. column_copy
    • 7.3.13. column_create
    • 7.3.14. column_list
    • 7.3.15. column_remove
    • 7.3.16. column_rename
    • 7.3.17. config_delete
    • 7.3.18. config_get
    • 7.3.19. config_set
    • 7.3.20. database_unmap
    • 7.3.21. define_selector
    • 7.3.22. defrag
    • 7.3.23. delete
    • 7.3.24. dump
    • 7.3.25. index_column_diff
    • 7.3.26. io_flush
    • 7.3.27. load
    • 7.3.28. lock_acquire
    • 7.3.29. lock_clear
    • 7.3.30. lock_release
    • 7.3.31. log_level
    • 7.3.32. log_put
    • 7.3.33. log_reopen
    • 7.3.34. logical_count
    • 7.3.35. logical_parameters
    • 7.3.36. logical_range_filter
    • 7.3.37. logical_select
    • 7.3.38. logical_shard_list
    • 7.3.39. logical_table_remove
    • 7.3.40. normalize
    • 7.3.41. normalizer_list
    • 7.3.42. object_exist
    • 7.3.43. object_inspect
    • 7.3.44. object_list
    • 7.3.45. object_remove
    • 7.3.46. plugin_register
    • 7.3.47. plugin_unregister
    • 7.3.48. query_expand
    • 7.3.49. quit
    • 7.3.50. range_filter
    • 7.3.51. reference_acquire
    • 7.3.52. reference_release
    • 7.3.53. register
    • 7.3.54. reindex
    • 7.3.55. request_cancel
    • 7.3.56. ruby_eval
    • 7.3.57. schema
    • 7.3.58. select
    • 7.3.59. shutdown
    • 7.3.60. status
    • 7.3.61. suggest
    • 7.3.62. table_copy
    • 7.3.63. table_create
    • 7.3.64. table_list
    • 7.3.65. table_remove
    • 7.3.66. table_rename
    • 7.3.67. table_tokenize
    • 7.3.68. thread_dump
    • 7.3.69. thread_limit
    • 7.3.70. tokenize
    • 7.3.71. tokenizer_list
    • 7.3.72. truncate
  • 7.4. データ型
  • 7.5. テーブル
  • 7.6. カラム
    • 7.6.2.1. スカラーカラム
    • 7.6.2.2. ベクターカラム
    • 7.6.2.3. 擬似カラム
    • 7.6.3.1. インデックスカラム
  • 7.7. ノーマライザー
    • 7.7.2.1. NormalizerAuto
    • 7.7.2.2. NormalizerNFKC
    • 7.7.2.3. NormalizerNFKC100
    • 7.7.2.4. NormalizerNFKC121
    • 7.7.2.5. NormalizerNFKC130
    • 7.7.2.6. NormalizerNFKC150
    • 7.7.2.7. NormalizerNFKC51
    • 7.7.2.8. NormalizerTable
  • 7.8. トークナイザー
    • 7.8.1. 概要
    • 7.8.2. TokenBigram
    • 7.8.3. TokenBigramIgnoreBlank
    • 7.8.4. TokenBigramIgnoreBlankSplitSymbol
    • 7.8.5. TokenBigramIgnoreBlankSplitSymbolAlpha
    • 7.8.6. TokenBigramIgnoreBlankSplitSymbolAlphaDigit
    • 7.8.7. TokenBigramSplitSymbol
    • 7.8.8. TokenBigramSplitSymbolAlpha
    • 7.8.9. TokenBigramSplitSymbolAlphaDigit
    • 7.8.10. TokenDelimit
    • 7.8.11. TokenDelimitNull
    • 7.8.12. TokenMecab
    • 7.8.13. TokenNgram
    • 7.8.14. TokenPattern
    • 7.8.15. TokenRegexp
    • 7.8.16. TokenTable
    • 7.8.17. TokenTrigram
    • 7.8.18. TokenUnigram
  • 7.9. トークンフィルター
    • 7.9.1. 概要
    • 7.9.2. TokenFilterNFKC
    • 7.9.3. TokenFilterNFKC100
    • 7.9.4. TokenFilterNFKC150
    • 7.9.5. TokenFilterStem
    • 7.9.6. TokenFilterStopWord
  • 7.10. クエリー展開オブジェクト一覧
    • 7.10.1. QueryExpanderTSV
  • 7.11. スコアラー
    • 7.11.3.1. scorer_tf_at_most
    • 7.11.3.2. scorer_tf_idf
  • 7.12. Cast
  • 7.13. grn_expr
    • 7.13.1. クエリー構文
    • 7.13.2. スクリプト構文
  • 7.14. 正規表現
  • 7.15. 関数
    • 7.15.1. between
    • 7.15.2. cast_loose
    • 7.15.3. edit_distance
    • 7.15.4. escalate
    • 7.15.5. fuzzy_search
    • 7.15.6. geo_distance
    • 7.15.7. geo_in_circle
    • 7.15.8. geo_in_rectangle
    • 7.15.9. highlight
    • 7.15.10. highlight_full
    • 7.15.11. highlight_html
    • 7.15.12. html_untag
    • 7.15.13. in_records
    • 7.15.14. in_values
    • 7.15.15. language_model_vectorize
    • 7.15.16. math_abs
    • 7.15.17. now
    • 7.15.18. number_classify
    • 7.15.19. prefix_rk_search
    • 7.15.20. query
    • 7.15.21. query_parallel_or
    • 7.15.22. rand
    • 7.15.23. snippet
    • 7.15.24. snippet_html
    • 7.15.25. string_length
    • 7.15.26. string_slice
    • 7.15.27. string_substring
    • 7.15.28. sub_filter
    • 7.15.29. time_classify_day
    • 7.15.30. time_classify_day_of_week
    • 7.15.31. time_classify_hour
    • 7.15.32. time_classify_minute
    • 7.15.33. time_classify_month
    • 7.15.34. time_classify_second
    • 7.15.35. time_classify_week
    • 7.15.36. time_classify_year
    • 7.15.37. vector_find
    • 7.15.38. vector_new
    • 7.15.39. vector_size
    • 7.15.40. vector_slice
  • 7.16. ウィンドウ関数
    • 7.16.1. record_number
    • 7.16.2. window_count
    • 7.16.3. window_rank
    • 7.16.4. window_record_number
    • 7.16.5. window_sum
  • 7.17. 操作方法
    • 7.17.1. 位置情報検索
    • 7.17.2. 前方一致RK検索
  • 7.18. 設定
  • 7.19. エイリアス
  • 7.20. サジェスト
    • 7.20.1. はじめに
    • 7.20.2. 補完
    • 7.20.3. 補正
    • 7.20.4. 提案
  • 7.21. インデックス構築
  • 7.22. シャーディング
  • 7.23. 言語モデル
  • 7.24. ログ
  • 7.25. チューニング
  • 7.26. API
    • 7.26.1. 概要
    • 7.26.2. 全体設定
    • 7.26.3. Plugin
    • 7.26.4. grn_cache
    • 7.26.5. grn_column
    • 7.26.6. grn_command_version
    • 7.26.7. grn_content_type
    • 7.26.8. grn_ctx
    • 7.26.9. grn_db
    • 7.26.10. grn_encoding
    • 7.26.11. grn_expr
    • 7.26.12. grn_geo
    • 7.26.13. grn_hook
    • 7.26.14. grn_ii
    • 7.26.15. grn_index_cursor
    • 7.26.16. grn_info
    • 7.26.17. grn_inspect
    • 7.26.18. grn_match_escalation
    • 7.26.19. grn_obj
    • 7.26.20. grn_proc
    • 7.26.21. grn_search
    • 7.26.22. grn_table
    • 7.26.23. grn_table_cursor
    • 7.26.24. grn_thread_*
    • 7.26.25. grn_type
    • 7.26.26. grn_user_data
  • 7. リファレンスマニュアル
  • 7.15. 関数
  • 7.15.19. prefix_rk_search

7.15.19. prefix_rk_search#

7.15.19.1. 概要#

prefix_rk_search は 前方一致RK検索 を使ってレコードを選択します。

前方一致RK検索を使うには TABLE_PAT_KEY テーブルを作る必要があります。

シーケンシャルスキャンでは prefix_rk_search を使うことはできません。これはセレクターのみのプロシージャです。

7.15.19.2. 構文#

prefix_rk_search には2つ引数があります。 column と query です。

prefix_rk_search(column, query)

今のところ、 column は必ず _key にしなければいけません。

query は文字列です。

7.15.19.3. 使い方#

使い方を示すために使うスキーマ定義とサンプルデータは以下の通りです。

実行例:

table_create Readings TABLE_PAT_KEY ShortText --normalizer NormalizerAuto
# [[0,1337566253.89858,0.000355720520019531],true]
load --table Readings
[
{"_key": "ニホン"},
{"_key": "ニッポン"},
{"_key": "ローマジ"}
]
# [[0,1337566253.89858,0.000355720520019531],3]

以下は簡単な prefix_rk_search() 関数の使い方です。この使い方では ni で ニホン と ニッポン を検索しています。

実行例:

select Readings --filter 'prefix_rk_search(_key, "ni")'
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     [
#       [
#         2
#       ],
#       [
#         [
#           "_id",
#           "UInt32"
#         ],
#         [
#           "_key",
#           "ShortText"
#         ]
#       ],
#       [
#         2,
#         "ニッポン"
#       ],
#       [
#         1,
#         "ニホン"
#       ]
#     ]
#   ]
# ]

sub_filter と組み合わせることで 補完 のような機能を実現することができます。

レコードが補完候補となるテーブルを作成します。各レコードには0個以上の読みがあります。読みは Readings テーブルに格納します。 Readings テーブルに Items.readings 用のインデックスカラムを定義することを忘れないでください。このインデックスカラムは sub_filter で必要になります。

実行例:

table_create Items TABLE_HASH_KEY ShortText
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Items readings COLUMN_VECTOR Readings
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Readings items_index COLUMN_INDEX Items readings
# [[0,1337566253.89858,0.000355720520019531],true]
load --table Items
[
{"_key": "日本",     "readings": ["ニホン", "ニッポン"]},
{"_key": "ローマ字", "readings": ["ローマジ"]},
{"_key": "漢字",     "readings": ["カンジ"]}
]
# [[0,1337566253.89858,0.000355720520019531],3]

niho で Items テーブルの中にある 日本 レコードを見つけることができます。なぜなら、 niho で前方一致RK検索をすると ニホン という読みが見つかり、 ニホン という読みは 日本 レコードの読みの1つだからです。

実行例:

select Items \
 --filter 'sub_filter(readings, "prefix_rk_search(_key, \\"niho\\")")'
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     [
#       [
#         1
#       ],
#       [
#         [
#           "_id",
#           "UInt32"
#         ],
#         [
#           "_key",
#           "ShortText"
#         ],
#         [
#           "readings",
#           "Readings"
#         ]
#       ],
#       [
#         1,
#         "日本",
#         [
#           "ニホン",
#           "ニッポン"
#         ]
#       ]
#     ]
#   ]
# ]

読みがない補完候補をサポートするために 前方一致検索演算子 も組み合わせる必要があります。

読みがない補完候補を1つ追加します。

実行例:

load --table Items
[
{"_key": "nihon", "readings": []}
]
# [[0,1337566253.89858,0.000355720520019531],1]

読みがない補完候補をサポートするために 前方一致検索演算子 を組み合わせます。

実行例:

select Items \
 --filter 'sub_filter(readings, "prefix_rk_search(_key, \\"niho\\")") || _key @^ "niho"'
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     [
#       [
#         2
#       ],
#       [
#         [
#           "_id",
#           "UInt32"
#         ],
#         [
#           "_key",
#           "ShortText"
#         ],
#         [
#           "readings",
#           "Readings"
#         ]
#       ],
#       [
#         1,
#         "日本",
#         [
#           "ニホン",
#           "ニッポン"
#         ]
#       ],
#       [
#         4,
#         "nihon",
#         [
#
#         ]
#       ]
#     ]
#   ]
# ]

多くの場合、補完時は大文字小文字を無視して検索したいものです。その場合は、 --normalizer NormalizerAuto と label カラムを使います。

実行例:

table_create LooseItems TABLE_HASH_KEY ShortText --normalizer NormalizerAuto
# [[0,1337566253.89858,0.000355720520019531],true]
column_create LooseItems label COLUMN_SCALAR ShortText
# [[0,1337566253.89858,0.000355720520019531],true]
column_create LooseItems readings COLUMN_VECTOR Readings
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Readings loose_items_index COLUMN_INDEX LooseItems readings
# [[0,1337566253.89858,0.000355720520019531],true]
load --table LooseItems
[
{"_key": "日本",     "label": "日本",     "readings": ["ニホン", "ニッポン"]},
{"_key": "ローマ字", "label": "ローマ字", "readings": ["ローマジ"]},
{"_key": "漢字",     "label": "漢字",     "readings": ["カンジ"]},
{"_key": "Nihon",    "label": "日本",     "readings": []}
]
# [[0,1337566253.89858,0.000355720520019531],4]

表示するときは LooseItems.label を使います。

実行例:

select LooseItems \
 --filter 'sub_filter(readings, "prefix_rk_search(_key, \\"nIhO\\")") || _key @^ "nIhO"' \
 --output_columns '_key,label'
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     [
#       [
#         2
#       ],
#       [
#         [
#           "_key",
#           "ShortText"
#         ],
#         [
#           "label",
#           "ShortText"
#         ]
#       ],
#       [
#         "日本",
#         "日本"
#       ],
#       [
#         "nihon",
#         "日本"
#       ]
#     ]
#   ]
# ]

7.15.19.4. 引数#

必須引数は二つあります。 column と query です。

7.15.19.4.1. column#

今のところ、常に _key を指定してください。

7.15.19.4.2. query#

クエリー文字列をローマ字、カタカナ、ひらがなのどれかで指定します。

7.15.19.5. 戻り値#

prefix_rk_search 関数はマッチしたレコードを返します。

7.15.19.6. 参考#

  • 前方一致RK検索

  • sub_filter

前へ

7.15.18. number_classify

次へ

7.15.20. query

このページでは
  • 7.15.19.1. 概要
  • 7.15.19.2. 構文
  • 7.15.19.3. 使い方
  • 7.15.19.4. 引数
    • 7.15.19.4.1. column
    • 7.15.19.4.2. query
  • 7.15.19.5. 戻り値
  • 7.15.19.6. 参考

© Copyright 2009-2025 Groonga Project.

PyData Sphinx Theme 0.16.1 で構築されています。