このページの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 ('京都', '京都 大阪 滋賀'); | ||
</ | </ | ||
+ | |||
+ | このようなテーブルを準備することによって、「東京」、「神奈川」、「埼玉」の何れが検索語として指定されても「東京」がヒットするようになります。尚、この例のように、'' | ||
+ | |||
+ | === mroonga_query_expand関数 === | ||
+ | |||
+ | 次のユーザ定義関数を '' | ||
+ | |||
+ | < | ||
+ | mroonga_query_expand(table, | ||
+ | </ | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | 例 | ||
<code sql> | <code sql> | ||
+ | SELECT * FROM diaries | ||
+ | WHERE MATCH(content) AGAINST(mroonga_query_expand(" | ||
+ | -- または | ||
+ | SELECT * FROM diaries | ||
+ | WHERE MATCH(content) AGAINST(mroonga_query_expand(" | ||
</ | </ | ||
+ | 上の2つは以下の同じ検索結果を表示します。 | ||
+ | |||
+ | <code sql> | ||
+ | 明日の東京都の天気は晴れでしょう。 | ||
+ | </ | ||
詳しくは、Mroongaの[[https:// | 詳しくは、Mroongaの[[https:// |