我的数据库中有一个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字段没有全文索引。
发布于 2013-04-23 01:33:32
my,id和123可能比ft_min_word_length更低。我犹豫了数字是否会被认为是单词,快速测试表明它们是单词,但最小(字符串)长度仍然适用。
发布于 2013-04-23 01:45:24
您需要设置以下内容:
第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这将阻止索引最多的评论词文章
步骤02 :将此代码添加到/etc/my.cnf
[mysqld]
ft_min_word_length=1
ft_stopword_file=/var/lib/mysql/stopwords.txt步骤03 :重启mysql
service mysql restart步骤04 :创建全文索引
ALTER TABLE mytable ADD FULLTEXT ft_title (title);之后,您的查询应该可以工作,或者至少可以产生实际的结果。
试一试吧!
https://stackoverflow.com/questions/16153028
复制相似问题