[Groonga-commit] pgroonga/pgroonga.github.io at 5c96052 [master] ja: update about autocomplete

Back to archive index

Kentaro Hayashi null+****@clear*****
Tue Jun 20 17:59:43 JST 2017


Kentaro Hayashi	2017-06-20 17:59:43 +0900 (Tue, 20 Jun 2017)

  New Revision: 5c9605260838f16e3c8d936919c4c2fecf4324a1
  https://github.com/pgroonga/pgroonga.github.io/commit/5c9605260838f16e3c8d936919c4c2fecf4324a1

  Merged 11c58fd: Merge pull request #29 from kenhys/add-autocomplete-ja

  Message:
    ja: update about autocomplete

  Added files:
    ja/how-to/autocomplete.md
  Modified files:
    ja/how-to/index.md

  Added: ja/how-to/autocomplete.md (+134 -0) 100644
===================================================================
--- /dev/null
+++ ja/how-to/autocomplete.md    2017-06-20 17:59:43 +0900 (632e563)
@@ -0,0 +1,134 @@
+---
+title: PGroongaでオートコンプリートをする方法
+---
+
+PGroongaでオートコンプリートをする方法
+
+PGroongaはGroongaのサジェストプラグインを直接使うことができません。そのためこのハウツーではPGroongaでオートコンプリートを実現する代替案を紹介します。
+
+PGroongaでオートコンプリートを実装するにはいくつかやり方があります。
+
+* オートコンプリート候補の用語に対して前方一致検索をする
+* オートコンプリート候補の用語に対して全文検索をする
+* オートコンプリート候補の用語の読みに対してローマ字カタカナ検索をする
+
+上記の方法を好きなように組み合わせて使うことができます。
+
+## サンプルのスキーマとインデックスの定義
+
+サンプルのスキーマを示します。
+
+```
+CREATE TABLE terms (
+    term text,
+    readings text[]
+);
+```
+
+オートコンプリートの候補となる用語は `term` に保存されます。 `term` の読みは `readings` へと保存されます。 `readings` の型が `text[]` であることからわかるように、複数の読みが `readings` には保存できます。
+
+サンプルのインデックス定義を示します。
+
+```
+CREATE INDEX pgroonga_terms_prefix_search ON terms USING pgroonga
+  (term pgroonga.text_term_search_ops_v2,
+   readings pgroonga.text_array_term_search_ops_v2);
+CREATE INDEX pgroonga_terms_full_text_search ON terms USING pgroonga
+  (term pgroonga.text_full_text_search_ops_v2);
+```
+
+上記のインデックス定義は前方一致検索や全文検索に必要です。
+
+## オートコンプリート候補の用語に対して前方一致検索
+
+オートコンプリート機能を提供するシンプルな方法です。前方一致を使います。PGroongaはそのための演算子として [`&^`演算子][prefix-search-v2]を提供しています。
+
+前方一致検索をするためのサンプルデータを示します。
+
+```
+INSERT INTO terms (term) VALUES ('autocomplete');
+```
+
+そして、前方一致検索するため `term` に対して `&^` を使います。結果は次の通りです。
+
+```
+SELECT term FROM terms WHERE term &^ 'auto';
+--      term     
+-- --------------
+--  autocomplete
+-- (1 rows)
+```
+
+結果には `autocomplete` がオートコンプリート候補の用語として含まれます。
+
+## オートコンプリート候補の用語に対して全文検索
+
+`term` を全文検索するには `&@` を使います。結果は次の通りです。
+
+```
+SELECT term FROM terms WHERE term &@ 'comp';
+--      term     
+-- --------------
+--  autocomplete
+-- (1 rows)
+```
+
+結果には `autocomplete` がオートコンプリート候補の用語として含まれます。
+
+## オートコンプリート候補の用語の読みに対してローマ字カタカナ前方一致検索
+
+RK検索のためのサンプルデータを示します。
+
+```
+INSERT INTO terms (term, readings) VALUES ('牛乳', ARRAY['ギュウニュウ', 'ミルク']);
+```
+
+`readings` にはカタカナのみ追加することに注意してください。これは前方一致RK検索を使ってオートコンプリート候補の用語を検索するのに必要です。
+
+そして、 `term` に対して前方一致RK検索をするのに `&^~` を使います。前方一致RK検索の例を示します。
+
+* 前方一致RK検索(ひらがな)
+* 前方一致RK検索(カタカナ)
+* 前方一致RK検索(ローマ字)
+
+```
+SELECT term FROM terms WHERE readings &^~ 'ぎゅう';
+--  term 
+-- ------
+--  牛乳
+-- (1 row)
+```
+
+前方一致RK検索によって「ぎゅう」(ひらがな)から"牛乳"をオートコンプリート候補として検索することができました。
+
+```
+SELECT term FROM terms WHERE readings &^~ 'ギュウ';
+--  term 
+-- ------
+--  牛乳
+-- (1 row)
+```
+
+前方一致RK検索では「ギュウ」(カタカナ)で"牛乳"をオートコンプリート候補の用語として検索することもできます。
+
+```
+SELECT term FROM terms WHERE readings &^~ 'gyu';
+--  term 
+-- ------
+--  牛乳
+-- (1 row)
+```
+
+前方一致RK検索では「gyu」(ローマ字)で"牛乳"をオートコンプリート候補の用語として検索することもできます。
+
+より高度な `readings` の使い方があります。同義語の読みを `readings` に入れると、それを使ってオートコンプリート候補の用語を検索することもできます。
+
+```
+SELECT term FROM terms WHERE readings &^~ 'mi';
+--  term 
+-- ------
+--  牛乳
+-- (1 row)
+```
+
+"牛乳"の同義語は"ミルク"ですが、"ミルク" を `readings` に読みとして追加することで、'mi'で検索したときも"牛乳"をオートコンプリート候補の用語として検索できます。

  Modified: ja/how-to/index.md (+4 -0)
===================================================================
--- ja/how-to/index.md    2017-06-20 17:20:03 +0900 (91e32f0)
+++ ja/how-to/index.md    2017-06-20 17:59:43 +0900 (d3b2a67)
@@ -8,6 +8,10 @@ title: ハウツー
 
 このページにない有用な情報を持っている場合は、ぜひ[pgroonga/pgroonga.github.io](https://github.com/pgroonga/pgroonga.github.io)にプルリクエストを送ってください。あなたの持っている有用な情報を共有してください!
 
+## オートコンプリートする方法
+
+  * [オートコンプリートする方法](autocomplete.html)
+
 ## Webアプリケーションフレームワークと一緒にPGroongaを使う方法
 
   * Ruby on Railsと一緒に使う方法:TODO
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index