Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


mroonga:10.7:config

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
mroonga:10.7:config [2020/11/10 10:08]
y2sunlight [TokenMecab]
mroonga:10.7:config [2020/11/11 10:00] (現在)
y2sunlight [TokenMecab]
行 1: 行 1:
-> 編集中 
- 
 ====== Mroonga9.12 全文検索の構成 ====== ====== Mroonga9.12 全文検索の構成 ======
 Version 9.12 (MariaDB 10.4.12) Version 9.12 (MariaDB 10.4.12)
行 52: 行 50:
 |リンゴ|りんご|カタカナ <nowiki>=></nowiki> ひらがな| |リンゴ|りんご|カタカナ <nowiki>=></nowiki> ひらがな|
  
-結論から先に言うと、ノーマライザーとして [[https://groonga.org/ja/docs/reference/normalizers/normalizer_auto.html|NormalizerAuto]] をべきです。以下、チュートリアルに従ってその理由を説明します。+結論から先に言うと、ノーマライザーとしては [[https://groonga.org/ja/docs/reference/normalizers/normalizer_auto.html|NormalizerAuto]] を使用すべきです。以下、チュートリアルに従ってその理由を説明します。
  
 \\ \\
行 213: 行 211:
 |none|トークナイズしません。| |none|トークナイズしません。|
 |TokenDelimit|空白区切りでトークナイズします。| |TokenDelimit|空白区切りでトークナイズします。|
 +|TokenRegexp|正規表現検索をサポートするトークナイザーです。|
 |TokenUnigram|ユニグラム(1-Gram)でトークナイズします。| |TokenUnigram|ユニグラム(1-Gram)でトークナイズします。|
 |TokenBigram|バイグラム(2-Gram)でトークナイズします。| |TokenBigram|バイグラム(2-Gram)でトークナイズします。|
行 221: 行 220:
  
 <code sql> <code sql>
-SHOW VARIABLES LIKE 'mroonga_default_parser';+SHOW VARIABLES LIKE 'mroonga_default_tokenizer';
 </code> </code>
  
行 235: 行 234:
 \\ \\
  
-===== TokenMecab =====+==== TokenMecab ====
  
-以下は「[[mroonga:10.7:tutorial|検索チュートリアル]]」で示した例を、形態素解析(Mecab)のパーサに替えたものです。+本編で使用している MariaDB with Mroonga (Windows版バイナリ) ではパーサとして形態素解析エンジンの Mecab がバンドルされていて直ぐに利用することができます。Mecab の本体は以下に配置されています: 
 + 
 +<code> 
 +{XAMPP-Folder}/mysql/bin/mecab.exe 
 +</code> 
 + 
 +Mecabの設定ファイル mecabrc の配置場所と内容を以下の示します: 
 + 
 +''{XAMPP-Folder}/mysql/etc/mecabrc''  
 + 
 +<code ini> 
 +; Configuration file of MeCab 
 + 
 +dicdir = $(rcpath)\..\share\mecab\dic\naist-jdic 
 +</code> 
 + 
 +mecabrc では形態素解析で使用する辞書が設定されています。初期設定の辞書としては、Mroongaにバンドルされている [[https://ja.osdn.net/projects/naist-jdic/|naist-jdic]] が指定されています。他の辞書に変えるときは、上の ''dicdir'' を変更するだけです。  
 + 
 +以下は「[[mroonga:10.7:tutorial|検索チュートリアル]]」で示した例を、Mecabのパーサに替えたものです。
  
 <code sql> <code sql>
行 251: 行 268:
 INSERT INTO diaries_mecab (content) VALUES ("明日の京都の天気は雨でしょう。"); INSERT INTO diaries_mecab (content) VALUES ("明日の京都の天気は雨でしょう。");
 </code> </code>
 +
 +以下の検索を実行します:
  
 <code sql> <code sql>
行 256: 行 275:
 </code> </code>
  
 +結果は以下のように出力されます:
 +<code sql>
 +明日の京都の天気は雨でしょう。
 +</code>
  
 +検索チュートリアルの[[mroonga:10.7:tutorial#自然言語検索|例]]では、トークナイザーがバイグラム (TokenBigram) だったので、「明日の東京都の天気は晴れでしょう。」にもヒットしてしまいましたが、Mecabの場合は形態素解析により「東京都」と「京都」を区別するのでこのような現象は起こりません。
 +
 +「明日の東京都の天気は晴れでしょう。」がバイグラムとMecabとでどのようにトークン化をされるかを確認するには、以下のようにSELECT文からGroongaコマンドを使います。
 +
 +バイグラムの場合:
 +
 +<code sql>
 +SELECT mroonga_command('tokenize TokenBigram "明日の東京都の天気は晴れでしょう。"');
 +</code>
 +
 +<code json>
 +[
 +  {"value":"明日","position":0,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"日の","position":1,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"の東","position":2,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"東京","position":3,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"京都","position":4,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"都の","position":5,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"の天","position":6,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"天気","position":7,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"気は","position":8,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"は晴","position":9,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"晴れ","position":10,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"れで","position":11,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"でし","position":12,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"しょ","position":13,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"ょう","position":14,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"う。","position":15,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"。","position":16,"force_prefix":false,"force_prefix_search":false}
 +]
 +</code>
 +
 +Mecabの場合:
 +
 +<code sql>
 +SELECT mroonga_command('tokenize TokenMecab "明日の東京都の天気は晴れでしょう。"');
 +</code>
 +
 +<code json>
 +[
 +  {"value":"明日","position":0,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"の","position":1,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"東京","position":2,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"都","position":3,"force_prefix":false,"force_prefix_search":false}, 
 +  {"value":"の","position":4,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"天気","position":5,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"は","position":6,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"晴れ","position":7,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"でしょ","position":8,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"う","position":9,"force_prefix":false,"force_prefix_search":false},
 +  {"value":"。","position":10,"force_prefix":false,"force_prefix_search":false}]
 +]
 +</code>
  
 \\ \\
  
  
-===== トークンフィルタ― =====+===== トークンフィルター ===== 
 + 
 +Mroongaではトークン化の後に、トークンに所定の処理を行うトークンフィルターを指定することができます。トークンフィルターを CREATE TABLE 文の中で指定するには、''COMMENT'' を使用した以下の構文を使用します: 
 + 
 +<code sql> 
 +FULLTEXT [INDEX] [インデックス名] (カラム1,...) COMMENT 'token_filters "フィルター名"' 
 +</code> 
 + 
 +以下の3つの組込みフィルターを使用できます。詳しくはGroongaの[[https://groonga.org/ja/docs/reference/token_filters.html|ドキュメント]]を参照して下さい。
  
-> TODO+  * [[https://groonga.org/ja/docs/reference/token_filters/token_filter_nfkc100.html|TokenFilterNFKC100]] \\  NormalizerNFKC100 と同じ正規化をトークン化後に使用できます。\\  
 +  * [[https://groonga.org/ja/docs/reference/token_filters/token_filter_stem.html|TokenFilterStem]] \\ トークンをステミングします(語形の変化を取り除き、同一の単語表現に変換する処理)。\\  
 +  * [[https://groonga.org/ja/docs/reference/token_filters/token_filter_stop_word.html|TokenFilterStopWord]]  \\ トークンからストップワードを除去します。
  
 \\ \\
mroonga/10.7/config.1604970500.txt.gz · 最終更新: 2020/11/10 10:08 by y2sunlight