1

MATCH / AGAINST私のデータベースには、mysqlクエリを使用して単語を検索したい varchar 列があります。ただし、複数の単語がある場合は機能していないようです。

INSERT INTO mytable (title) VALUES ('my id 123');

SELECT * FROM mytable WHERE MATCH (title) AGAINST ('+my +id +123' IN BOOLEAN MODE);

結果を返しません。クエリ構文に何か不足していますか? titleフィールドにはフルテキスト インデックスがないことに注意してください。

4

2 に答える 2

1

以下を設定する必要があります。

STEP 01: ストップワードリストを作成する

echo "a"    > /var/lib/mysql/stopwords.txt
echo "an"  >> /var/lib/mysql/stopwords.txt
echo "the" >> /var/lib/mysql/stopwords.txt
chown mysql:mysql /var/lib/mysql/stopwords.txt

これにより、ほとんどのコメントワード記事のインデックス作成が防止されます

STEP 02 : これを /etc/my.cnf に追加します

[mysqld]
ft_min_word_length=1
ft_stopword_file=/var/lib/mysql/stopwords.txt

STEP 03 : mysql を再起動する

service mysql restart

STEP 04 : FULLTEXT インデックスを作成する

ALTER TABLE mytable ADD FULLTEXT ft_title (title);

その後、クエリが機能するか、少なくとも具体的な結果が得られるはずです。

試してみる !!!

于 2013-04-22T17:45:23.967 に答える