このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
mroonga:10.7:tutorial [2020/11/10 16:41] y2sunlight [スニペット] |
mroonga:10.7:tutorial [2020/11/10 17:56] (現在) y2sunlight [クエリ展開] |
||
|---|---|---|---|
| 行 385: | 行 385: | ||
| ==== スニペット ==== | ==== スニペット ==== | ||
| - | スニペット(snippet)とは「切れ端」という意味で、検索結果として表示されるページへの短い説明文のことを指します。次のユーザ定義関数を SELECT リスト内で使って、検索語周辺のテキストを検索語をハイライトした状態でHTMLを出力できます。 | + | スニペット(snippet)とは「切れ端」という意味で、検索結果として表示されるページへの短い説明文のことを指します。次のユーザ定義関数を SELECT リスト内で使って、検索語周辺のテキストを検索語をハイライトした状態でHTML出力できます。 |
| <code sql> | <code sql> | ||
| 行 411: | 行 411: | ||
| </ | </ | ||
| - | 検索結果内の指定されたキーワードを強調表示して、キーワード周辺のテキストを表示します。全体をで囲み | + | 検索結果内の指定されたキーワードを強調表示して、キーワード周辺のテキストを表示します。全体を ''< |
| より詳細な設定をしたい場合は、次の '' | より詳細な設定をしたい場合は、次の '' | ||
| 行 420: | 行 420: | ||
| SELECT | SELECT | ||
| mroonga_snippet( | mroonga_snippet( | ||
| - | content | + | content |
| - | , 100, 3 | + | , 100 -- スニペットの最大長(バイト単位) |
| - | , ' | + | |
| - | , 1, 1 | + | , ' |
| - | , ' | + | , 1 -- 先頭の空白を無視する(1)か否(0)か |
| - | , ' | + | |
| - | , ' | + | , ' |
| - | , ' | + | |
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| ) as snippet | ) as snippet | ||
| FROM diaries | FROM diaries | ||
| 行 436: | 行 439: | ||
| <code sql> | <code sql> | ||
| - | ..<span class=" | + | ...<span class=" |
| ...<span class=" | ...<span class=" | ||
| ...今日の< | ...今日の< | ||
| 行 446: | 行 449: | ||
| \\ | \\ | ||
| - | ==== クエリ展開 | + | ==== クエリ展開 ==== |
| - | https:// | + | 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 (' | ||
| </ | </ | ||
| + | |||
| + | このようなテーブルを準備することによって、「東京」、「神奈川」、「埼玉」の何れが検索語として指定されても「東京」がヒットするようになります。尚、この例のように、'' | ||
| + | |||
| + | === mroonga_query_expand関数 === | ||
| + | |||
| + | 次のユーザ定義関数を '' | ||
| + | |||
| + | < | ||
| + | mroonga_query_expand(table, | ||
| + | </ | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | 例 | ||
| + | |||
| + | <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:// | ||
| \\ | \\ | ||