我的数据库中有一个 varchar 列,我想使用 mysql MATCH/AGAINST
查询来搜索单词。但是,如果有多个单词,它似乎不起作用。
INSERT INTO mytable (title) VALUES ('my id 123');
SELECT * FROM mytable WHERE MATCH (title) AGAINST ('+my +id +123' IN BOOLEAN MODE);
不返回任何结果。我在查询语法中遗漏了什么吗?请注意,title
字段没有全文索引。
最佳答案
您需要设置以下内容:
第 1 步:创建停用词列表
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
这将阻止索引最多评论词的文章
第 02 步:将此添加到/etc/my.cnf
[mysqld]
ft_min_word_length=1
ft_stopword_file=/var/lib/mysql/stopwords.txt
第三步:重启mysql
service mysql restart
第四步:创建全文索引
ALTER TABLE mytable ADD FULLTEXT ft_title (title);
之后,您的查询应该会起作用,或者至少会产生切实的结果。
试一试!!!
关于mysql 匹配/反对语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16153028/