1

本当にわかりませんがMATCH (columnName) AGAINST ('word')、MySQLでは、 orを含まwordず、 を正確に含むものしか見つかりませんでした。wordskeyword

システムでこのクエリを実行してみました:

select count(*) from content where lcase(content_text) like '%try%' 
and not match (content_text) against ('try') order by content_id

そして私は結果を受け取りました

| count(*) |
____________
|  379     |

クエリやデータベースで何が問題になる可能性がありますか?

PS: テーブルcontentは MyISAM で、列content_text全体にインデックスを設定しました。

4

2 に答える 2

2

「try」はMySQLのストップワードです。全文検索の場合、その単語は無視されます。

参照:http ://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html

また、そうです、MATCH単語全体を検索するだけです。自然言語検索です。部分的な単語(単語内の文字)を検索する場合は、LIKE %xxx%isnteadを使用します。

于 2012-07-24T05:40:49.273 に答える
2

全文検索はいくつかの一般的な単語を停止しますが、この手順を使用すると無効になります。

1: mysql で my.ini ファイルを開く

2: my.ini の [mysqld] 行の 2 行下に配置 (ファイル内の [mysqld] を検索)

ft_min_word_len=1
ft_stopword_file=""

3: サーバーを再起動します

4: 以下のコマンドを使用してテーブルを修復します

テーブル tablename を修復します。

5: 検索が機能するようになりました....

于 2013-12-18T08:01:19.897 に答える