mysqlクエリ拡張テクノロジーのチュートリアル

巴扎黑
リリース: 2017-05-12 14:18:44
オリジナル
1229 人が閲覧しました

クエリ拡張は、返される全文検索結果の範囲を広げるために使用されます。次の状況を考えてみましょう。金床について言及しているすべてのコメントを検索したいとします。 anvils という単語が含まれるコメントは 1 つだけですが、たとえ anvils が含まれていない場合でも、検索に関連する可能性のある他のすべての行も検索したいとします。

これもクエリ拡張のタスクです。クエリ拡張を使用する場合、MySQL はデータとインデックスの 2 つのスキャンを実行して検索を完了します:

1. 最初に、基本的な全文検索を実行して、検索条件に一致するすべての行を検索します。2 番目は、MySQL チェックです。これらの一致する行を検索し、有用な単語をすべて選択します (MySQL が有用なものとそうでないものをどのように判断するかについて簡単に説明します)。

3. 次に、MySQL は再び全文検索を実行します。今回は元の条件だけでなく、すべての有用な単語も使用します。

検索している用語が正確に含まれていない場合でも、クエリ拡張を使用して、関連する可能性のある結果を見つけます。

MySQL バージョン 4.1.1 以降でのみ使用します。クエリ拡張機能は MySQL 4.1.1 で導入されたため、以前のバージョンでは使用できません。

クエリ拡張なしの単純な全文検索から始まる例を次に示します。

入力:

select note_text from productnotes where match(note_text) against('anvils');
ログイン後にコピー

出力:

mysqlクエリ拡張テクノロジーのチュートリアル分析: 1 行のみに単語 anvils が含まれるため、1 行のみが返されます。

ここではクエリ拡張を使用した同じ検索を示します。

入力:

select note_text from productnotes where match(note_text) against('anvils' with query expansion);
ログイン後にコピー

出力:

mysqlクエリ拡張テクノロジーのチュートリアル分析: 今回は 7 行が返されました。最初の行には「anvils」という単語が含まれているため、最高ランクになります。 2行目は anvils とは関係ありませんが、1行目の2つの単語( customer と recommend )が含まれているため、これも取得されます。 3 行目にも同じ 2 つの単語が含まれていますが、テキスト内ではさらに後方にあり、離れているため、この行も含まれていますが、ランクは 3 番目です。 3 行目も、アンビル (製品名) については言及していません。

ご覧のとおり、クエリ拡張により返される行数が大幅に増加しますが、その際、実際には必要のない行数も増加します。

行が多いほど良いテーブル内の行が多いほど (それらの行内のテキストが多いほど)、クエリ拡張を使用して返される結果はより良いものになります。

以上がmysqlクエリ拡張テクノロジーのチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!