ホームページ  >  記事  >  データベース  >  mysql ブール値テキスト検索のチュートリアル

mysql ブール値テキスト検索のチュートリアル

巴扎黑
巴扎黑オリジナル
2017-05-12 14:18:501853ブラウズ

MySQL は、ブール モードと呼ばれる別の形式の全文検索をサポートしています。ブール方式で、次の詳細を指定できます。

一致する単語;

1.除外する単語 (行にこの単語が含まれる場合、他の指定された単語が含まれていても、その行は返されません)。

2. 配置のヒント (一部の単語が他の単語よりも重要であること、およびより重要な単語のレベルが高いことを指定する)

4. 他の内容。

FULLTEXT インデックスがなくても使用可能 ブール型アプローチは、FULLTEXT インデックスが定義されていない場合でも使用できるという点で、これまで使用されていた全文検索構文とは異なります。ただし、これは非常に遅い操作です (データ量が増えるとパフォーマンスが低下します)。

IN BOOLEAN MODE の役割を示すために、簡単な例を示します:

入力:

select note_text from productnotes where match(note_text) against('anvils' in boolean mode);

出力:

mysql ブール値テキスト検索のチュートリアル分析: この全文検索は、単語を含むすべての行 (2 行あります) を取得します。重い。キーワード IN BOOLEAN MODE が使用されていますが、実際にはブール演算子が指定されていないため、結果はブール モードが指定されていない場合と同じになります。

IN BOOLEAN MODE の動作の違い この例の結果は IN BOOLEAN MODE を使用しない場合と同じですが、その動作には重要な違いがあります (この特定の例では示されていませんが)。

heavy を含むが、rope で始まる単語が含まれていない行を照合するには、次のクエリを使用します。

入力:

select note_text from productnotes where match(note_text) against('heavy -rope' in boolean mode);

出力:

mysql ブール値テキスト検索のチュートリアル分析: 今回は 1 行だけが返されます。今回は単語「heavy」が引き続き一致しますが、 -rope* は明示的に MySQL に、rope* (ropes を含む、rope で始まるすべての単語) を含む行を除外するよう指示します。これが、前の例の最初の行が除外された理由です。

MySQL 4.x で必要なコード変更 MySQL 4.x を使用している場合、上記の例では行が返されない可能性があります。これは * 演算子の処理におけるバグです。この例を MySQL 4.x で使用するには、 -rope* の代わりに -ropes を使用します (rope で始まる単語を除外するのではなく、ropes を除外します)。

2 つの全文検索ブール演算子 - と * , - は単語を除外しますが、 * は切り捨て演算子です (単語の終わりのワイルドカードと考えてください)。次の表は、サポートされているすべてのブール演算子のリストです。

mysql ブール値テキスト検索のチュートリアル特定の演算子の使用方法の例をいくつか示します:

入力:

select note_text from productnotes where match(note_text) against('+rabbit +bait' in boolean mode);

分析: この検索は、rabbit と Bait という単語を含む行と一致します。

入力:

select note_text from productnotes where match(note_text) agains('rabbit bait' in boolean mode);

分析: 演算子を指定しないと、この検索は、「rabbit」と「bait」の少なくとも 1 つの単語を含む行と一致します。

入力:

select note_text from productnotes where match(note_text) agains('"rabbit bait"' in boolean mode);

分析: この検索は、rabbit と Bait という 2 つの単語ではなく、rabbitbait というフレーズと一致します。

入力:

select note_text from productnotes where match(note_text) agains(&#39;>rabbit <bcarrot&#39; in boolean mode);

分析: ウサギとニンジンを一致させ、前者のレベルを上げ、後者のレベルを下げます。

入力:

select note_text from productnotes where match(note_text) agains(&#39;+safe +(<combination)&#39; in boolean mode);

分析: この検索は単語「safe」と「combination」に一致し、後者のランクを下げます。

並べ替えずに並べる ブール モードでは、返された行をランク値の降順で並べ替えません。

以上がmysql ブール値テキスト検索のチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。