首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql match / against语法

mysql match / against语法
EN

Stack Overflow用户
提问于 2013-04-23 01:24:37
回答 2查看 1.1K关注 0票数 1

我的数据库中有一个varchar列,我希望使用mysql MATCH / AGAINST查询来搜索单词。然而,如果有多个单词,它似乎不起作用。

代码语言:javascript
复制
INSERT INTO mytable (title) VALUES ('my id 123');

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

不返回任何结果。我是否在查询语法中遗漏了什么?请注意,title字段没有全文索引。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-23 01:33:32

myid123可能比ft_min_word_length更低。我犹豫了数字是否会被认为是单词,快速测试表明它们是单词,但最小(字符串)长度仍然适用。

票数 0
EN

Stack Overflow用户

发布于 2013-04-23 01:45:24

您需要设置以下内容:

第01步:创建停用词列表

代码语言:javascript
复制
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

代码语言:javascript
复制
[mysqld]
ft_min_word_length=1
ft_stopword_file=/var/lib/mysql/stopwords.txt

步骤03 :重启mysql

代码语言:javascript
复制
service mysql restart

步骤04 :创建全文索引

代码语言:javascript
复制
ALTER TABLE mytable ADD FULLTEXT ft_title (title);

之后,您的查询应该可以工作,或者至少可以产生实际的结果。

试一试吧!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16153028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档