Ground Sunlight

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

ユーザ用ツール

サイト用ツール


mroonga:10.7:tutorial

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
mroonga:10.7:tutorial [2020/11/10 16:51]
y2sunlight [スニペット]
mroonga:10.7:tutorial [2020/11/10 17:56] (現在)
y2sunlight [クエリ展開]
行 426: 行 426:
     , 1                  -- 先頭の空白を無視する(1)か否(0)か     , 1                  -- 先頭の空白を無視する(1)か否(0)か
     , 1                  -- HTMLエスケープを行うか(1)か否(0)か     , 1                  -- HTMLエスケープを行うか(1)か否(0)か
-    , '...'              -- スニペットの開始テキストと終了テキスト +    , '...'              -- スニペットの開始テキスト 
-    , '...'              -- スニペットの開始テキストと終了テキスト+    , '...'              -- スニペットの終了テキスト
     , '明日', '<span class="keyword">', '</span>'  -- キワード,キワードの開始テキスト,ワードの終了テキスト     , '明日', '<span class="keyword">', '</span>'  -- キワード,キワードの開始テキスト,ワードの終了テキスト
     , '天気', '<span class="keyword">', '</span>'  -- 同上     , '天気', '<span class="keyword">', '</span>'  -- 同上
行 449: 行 449:
 \\ \\
  
-==== クエリ展開 (同義語/関連語展開) ====+==== クエリ展開 ====
  
-https://mroonga.org/ja/blog/2017/10/12/mroonga-7.07.html+Mroongaのクエリ展開機能は、同義語や関連語を展開して検索する場合に利用できます。 
  
-の使い勝手った+まずは、以下ような関連語テーブルを準備します。以下の例では、検索対象周辺の都道府県を持つ関連語テーブルを例として使用しますが、同義語テーブルなど一般的もしれません。
  
 <code sql> <code sql>
 +CREATE TABLE area (
 +  name varchar(255),
 +  pref varchar(255),
 +  INDEX (name)
 +) ENGINE = Mroonga COLLATE utf8_unicode_ci;
 +INSERT INTO area VALUES ('東京', '東京 神奈川 埼玉');
 +INSERT INTO area VALUES ('神奈川', '神奈川 東京 静岡');
 +INSERT INTO area VALUES ('大阪', '大阪 京都 兵庫');
 +INSERT INTO area VALUES ('京都', '京都 大阪 滋賀');
 </code> </code>
 +
 +このようなテーブルを準備することによって、「東京」、「神奈川」、「埼玉」の何れが検索語として指定されても「東京」がヒットするようになります。尚、この例のように、''pref'' には自分自身の都道府県の名前も含める必要があります。
 +
 +=== mroonga_query_expand関数 ===
 +
 +次のユーザ定義関数を ''MATCH AGAINST'' 関数内で使って、クエリ展開機能(この例では関連語展開検索)が利用できます。
 +
 +<code>
 +mroonga_query_expand(table, term, synonyms, query);
 +</code>
 +
 +  * ''table'' には 同義語や関連語を定義するテーブル名を指定します。
 +  * ''term'' には 検索対象語句を保持する ''table'' 内のカラム名を指定します。
 +  * ''synonyms'' には 同義語や関連語を保持する ''table'' 内のカラム名を指定します。
 +  * ''query'' には 通常の ''MATCH AGAINST'' 関数で使用する検索条件を指定します。
 +
 +
 +
 +<code sql>
 +SELECT * FROM diaries
 +  WHERE MATCH(content) AGAINST(mroonga_query_expand("area", "name", "pref", "+明日 +天気 +東京") IN BOOLEAN MODE)
 +-- または
 +SELECT * FROM diaries
 +  WHERE MATCH(content) AGAINST(mroonga_query_expand("area", "name", "pref", "+明日 +天気 +神奈川") IN BOOLEAN MODE)
 +</code>
 +
 +上の2つは以下の同じ検索結果を表示します。
 +
 +<code sql>
 +明日の東京都の天気は晴れでしょう。
 +</code>
 +
 +詳しくは、Mroongaの[[https://mroonga.org/ja/blog/2017/10/12/mroonga-7.07.html|ドキュメント]]を参照して下さい。
  
 \\ \\
  
mroonga/10.7/tutorial.1604994665.txt.gz · 最終更新: 2020/11/10 16:51 by y2sunlight