Ground Sunlight

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

ユーザ用ツール

サイト用ツール


mroonga:10.7:tutorial

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
mroonga:10.7:tutorial [2020/11/10 17:07]
y2sunlight [クエリ展開 (同義語/関連語展開)]
mroonga:10.7:tutorial [2020/11/10 17:56] (現在)
y2sunlight [クエリ展開]
行 452: 行 452:
  
 Mroongaのクエリ展開機能は、同義語や関連語を展開して検索する場合に利用できます。  Mroongaのクエリ展開機能は、同義語や関連語を展開して検索する場合に利用できます。 
 +
 +まずは、以下のような関連語テーブルを準備します。以下の例では、検索対象周辺の都道府県を持つ関連語テーブルを例として使用しますが、同義語テーブルなどが一般的かもしれません。
  
 <code sql> <code sql>
 CREATE TABLE area ( CREATE TABLE area (
-  name INT PRIMARY KEY AUTO_INCREMENT,+  name varchar(255),
   pref varchar(255),   pref varchar(255),
   INDEX (name)   INDEX (name)
 ) ENGINE = Mroonga COLLATE utf8_unicode_ci; ) ENGINE = Mroonga COLLATE utf8_unicode_ci;
-INSERT INTO area VALUES ('大阪', '大阪 京都 神戸'); +INSERT INTO area VALUES ('東京', '東京 神奈川 埼玉'); 
-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> <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> </code>
  
 +上の2つは以下の同じ検索結果を表示します。
 +
 +<code sql>
 +明日の東京都の天気は晴れでしょう。
 +</code>
  
 詳しくは、Mroongaの[[https://mroonga.org/ja/blog/2017/10/12/mroonga-7.07.html|ドキュメント]]を参照して下さい。 詳しくは、Mroongaの[[https://mroonga.org/ja/blog/2017/10/12/mroonga-7.07.html|ドキュメント]]を参照して下さい。
mroonga/10.7/tutorial.1604995636.txt.gz · 最終更新: 2020/11/10 17:07 by y2sunlight