Navigation Menu

Skip to content

Commit

Permalink
typo: AGAINS -> AGAINST
Browse files Browse the repository at this point in the history
  • Loading branch information
mooz committed Jun 29, 2011
1 parent 9c8084f commit 8ac1105
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions doc/ja/source/userguide/wrapper.rst
Expand Up @@ -193,16 +193,16 @@ groongaストレージエンジンではデフォルトでログの出力を行

サンプルクエリは ``SELECT * FROM users WHERE users.age >= 20 AND MATCH(description) AGAINST("趣味");`` とします。

1. MySQLはクエリのうち全文検索条件の部分「 ``MATCH(description) AGAINS("趣味")`` 」だけで検索するようにgroongaストレージエンジンに依頼します。
1. MySQLはクエリのうち全文検索条件の部分「 ``MATCH(description) AGAINST("趣味")`` 」だけで検索するようにgroongaストレージエンジンに依頼します。
2. groongaストレージエンジンはMySQLから渡された条件で全文検索を行います。
3. MySQLはクエリから全文検索条件の部分「 ``MATCH(description) AGAINS("趣味")`` 」を取り除いたクエリ「 ``SELECT * FROM users WHERE users.age >= 20`` 」で検索するようgroongaストレージエンジンに依頼します。
3. MySQLはクエリから全文検索条件の部分「 ``MATCH(description) AGAINST("趣味")`` 」を取り除いたクエリ「 ``SELECT * FROM users WHERE users.age >= 20`` 」で検索するようgroongaストレージエンジンに依頼します。
4. groongaストレージエンジンはMySQLから渡された条件で検索するようにラップしているストレージエンジンに依頼します。
5. MySQLはgroongaストレージエンジンにマッチしたレコードを順に返すように要求します。
6. groongaストレージエンジンはラップしているストレージエンジンからレコードを順に取り出してMySQLに返します。このとき返すレコードは「 ``users.age >= 20`` 」にマッチしたレコードです。「 ``MATCH(description) AGAINS ("趣味")`` 」での絞り込みは行われていません。
6. groongaストレージエンジンはラップしているストレージエンジンからレコードを順に取り出してMySQLに返します。このとき返すレコードは「 ``users.age >= 20`` 」にマッチしたレコードです。「 ``MATCH(description) AGAINST ("趣味")`` 」での絞り込みは行われていません。
7. MySQLはgroongaストレージエンジンから返ってきたそれぞれのレコードについて、全文検索結果のスコアを問い合せます。
8. groongaストレージエンジンは各レコードについて「 ``MATCH(description) AGAINS ("趣味")`` 」がヒットしていればスコアを返し、そうでなければ「ヒットしなかったという特別なスコア」を返します。
8. groongaストレージエンジンは各レコードについて「 ``MATCH(description) AGAINST ("趣味")`` 」がヒットしていればスコアを返し、そうでなければ「ヒットしなかったという特別なスコア」を返します。
9. MySQLはgroongaストレージエンジンが返したスコアを確認し、「ヒットしなかったという特別なスコア」が返されたレコードを検索結果から除去します。この時点ではじめて全文検索結果がレコードの絞り込みに使われます。
10. MySQLはgroongaストレージエンジンが返したレコード(= ラップしているストレージエンジンが返したレコード)から、「 ``MATCH(description) AGAINS ("趣味")`` 」にヒットしなかったレコードを削除したものをクライアントに返します。
10. MySQLはgroongaストレージエンジンが返したレコード(= ラップしているストレージエンジンが返したレコード)から、「 ``MATCH(description) AGAINST ("趣味")`` 」にヒットしなかったレコードを削除したものをクライアントに返します。

このうち、6.のところで全文検索結果を反映したレコードのみを返すことができれば余計なレコードアクセスが減り、より高いパフォーマンスをだせます。しかし、MySQLのストレージエンジンAPIでは「全文検索以外の条件でレコードを取得した後に全文検索結果を参照してレコードをフィルターする」という動作のためせっかくのgroongaの高速な全文検索機能を活かしきれていません。

Expand All @@ -213,14 +213,14 @@ groongaストレージエンジンではデフォルトでログの出力を行

サンプルクエリは ``SELECT * FROM users WHERE users.age >= 20 AND MATCH(description) AGAINST("趣味");`` とします。

1. MySQLはクエリのうち全文検索条件の部分「 ``MATCH(description) AGAINS("趣味")`` 」だけで検索するようにgroongaストレージエンジンに依頼します。
1. MySQLはクエリのうち全文検索条件の部分「 ``MATCH(description) AGAINST("趣味")`` 」だけで検索するようにgroongaストレージエンジンに依頼します。
2. groongaストレージエンジンはMySQLから渡された条件で全文検索を行います。
3. MySQLはクエリから全文検索条件の部分「 ``MATCH(description) AGAINS("趣味")`` 」を取り除いたクエリ「 ``SELECT * FROM users WHERE users.age >= 20`` 」で検索するようgroongaストレージエンジンに依頼します。
3. MySQLはクエリから全文検索条件の部分「 ``MATCH(description) AGAINST("趣味")`` 」を取り除いたクエリ「 ``SELECT * FROM users WHERE users.age >= 20`` 」で検索するようgroongaストレージエンジンに依頼します。
4. groongaストレージエンジンはMySQLから渡されたクエリに全文検索でヒットしたレコードで絞り込む条件「 ``id IN (1, 3, 4, ...)`` 」を追加したクエリ「 ``SELECT * FROM users WHERE users.age >= 20 AND id IN (1, 3, 4, ...)`` 」で検索するよう、ラップしているストレージエンジンに依頼します。
5. MySQLはgroongaストレージエンジンにレコードを順に返すように要求します。
6. groongaストレージエンジンはラップしているストレージエンジンからレコードを順に取り出してMySQLに返します。このとき返すレコードは「 ``users.age >= 20 AND id IN (1, 3, 4, ...)`` 」にマッチしたレコードなので、「 ``MATCH(description) AGAINS ("趣味")`` 」での絞り込み結果も反映されています。
6. groongaストレージエンジンはラップしているストレージエンジンからレコードを順に取り出してMySQLに返します。このとき返すレコードは「 ``users.age >= 20 AND id IN (1, 3, 4, ...)`` 」にマッチしたレコードなので、「 ``MATCH(description) AGAINST ("趣味")`` 」での絞り込み結果も反映されています。
7. MySQLはgroongaストレージエンジンから返ってきたそれぞれのレコードについて、全文検索結果のスコアを問い合せます。
8. groongaストレージエンジンは各レコードについて「 ``MATCH(description) AGAINS ("趣味")`` 」で検索した結果のスコアを返します。
8. groongaストレージエンジンは各レコードについて「 ``MATCH(description) AGAINST ("趣味")`` 」で検索した結果のスコアを返します。
9. MySQLはgroongaストレージエンジンが返したレコードをクライアントに返します。

ポイントは4.の「全文検索でヒットしたレコードで絞り込む条件」を追加している部分です。これで「全文検索条件での絞り込みで無駄なレコードアクセスを減らすことができない」というMySQLのストレージエンジンAPIの制限を回避することができます。これにより、全文検索結果を用いて無駄なレコードアクセスを減らすことができるため、高速な全文検索を実現できます。

0 comments on commit 8ac1105

Please sign in to comment.