2012-01-29 14 views
0

現在、私のdbはwhat、allなどの単語を無視します。 dbがこれらの種類の単語やabbsなどを無視するのを止めるにはどうすればいいですか?mysql fulltext!

あなたは私のSQLコマンドを見て必要がある場合:

SELECT *, MATCH(title,body) AGAINST('*what*' IN BOOLEAN MODE) AS sort 
FROM articles WHERE MATCH(title,body) AGAINST('*what*' IN BOOLEAN MODE) ORDER BY sort DESC LIMIT 20; 

答えて

1

whatはストップワードの中に含まれています。

それは上のストップワードを変更することも可能です5.6でMySQL 5.5 finetuning

を参照してください、あなたはft_stopword_fileシステム変数を変更し、ストップワードの異なるセットをロードする(あるいは単にwhatを除外)することができますMySQL 5.5 stopwords

を見てみましょうテーブル単位で(InnoDBのみ)。 MySQL 5.6 stopwords

+2

サーバーに影響を与えずにこれを行うことはできますか?言い換えれば、私たちは特定のデータベースまたはユーザーに対してこれを行うことができますか? –

+0

これは本当にばかげているが、予約語はバックティックを必要とする。 – HenryGuy

+0

私はあなたが何を意味するかわからない:)? –

1

私は10年以上にわたってmysqlを使用しており、このようなものを約3年間扱っています。私は、3文字の単語以下を索引付けしないこと、そして頻繁に発生するキーワードの非常に恣意的なリストを無視して、愚かさと悪意のある間の境界線にあるというMySQLのアプローチがあると言わなければなりません。

たとえば、MySQLでは、ユーザーが「コース」や「金」や「FBI」を決して検索しないと想定しています。これはおそらく得るかもしれないほど愚かです!

これらの設定は、OSアップデートで上書きされた設定ファイルの一部であり、システムのアップデート後にこの動作を戻し、OSのアップデートとその後の間に発生する不整合なポリシーの結果をフルテキストインデックスに混入させますmy.cnfに変更されます。

これをデフォルトの動作にする理由はありません。

今日私は、my.cnfを編集してこれらの変更を自動的に行うためのシェル関数を書いてしまったのです。これは、私の一般的なナイトメンテナンススクリプトの一環として、システムがアップデートされた後に実行されます。

[mysqld] 
ft_stopword_file="" 
ft_min_word_len=0 
関連する問題