MySQLのFULLTEXT全文検索に関する注意事項
916 ワード
英語の場合、MySQLのFULLTEXTプロパティは全文検索を実現するのにかなり便利で効率的ですが、使用中に注意しなければならないことがあります.
まず、取得が必要なフィールドにFULLTEXTプロパティを追加します(テーブルが作成されたと仮定します):
SQL:
次に、データを問い合せます.
SQL:
ここでは、重要な注意事項について説明します.
MySQLでは全文検索で検索された単語が存在する行数が検索されたすべての行数の半分以上である場合、検索された単語をCommon wordとして表示しないようにしています.(具体的な条件は資料を調べて確定する必要がある)
したがって、テスト時にテーブルにデータが1行しかないと仮定するので、上記のクエリ文をどのように実行しても、返される結果は常に空です.あわてないで、キーワードを調べていないデータをいくつか追加すると結果が出ます~
もちろん、MySQLはより強力なクエリー結果フィルタリングを提供します.
SQL:
すると、keywordを含むkeyword_を含む1のデータ2のデータはフィルタリングされます.
使用方法:http://www.luoning.me/mysql-fulltext.html
まず、取得が必要なフィールドにFULLTEXTプロパティを追加します(テーブルが作成されたと仮定します):
SQL:
alter table table_name add fulltext index(filed_1,filed_2);
次に、データを問い合せます.
SQL:
SELECT * FROM table_name WHERE MATCH (filed_1,filed_2) AGAINST ('keyword');
ここでは、重要な注意事項について説明します.
MySQLでは全文検索で検索された単語が存在する行数が検索されたすべての行数の半分以上である場合、検索された単語をCommon wordとして表示しないようにしています.(具体的な条件は資料を調べて確定する必要がある)
したがって、テスト時にテーブルにデータが1行しかないと仮定するので、上記のクエリ文をどのように実行しても、返される結果は常に空です.あわてないで、キーワードを調べていないデータをいくつか追加すると結果が出ます~
もちろん、MySQLはより強力なクエリー結果フィルタリングを提供します.
SQL:
SELECT * FROM table_name WHERE MATCH (filed_1,filed_2) AGAINST ('+keyword_1 -keyword_2' IN BOOLEAN MODE);
すると、keywordを含むkeyword_を含む1のデータ2のデータはフィルタリングされます.
使用方法:http://www.luoning.me/mysql-fulltext.html