mysql 匹配/反对语法

标签 mysql full-text-search

我的数据库中有一个 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/

相关文章:

MySQL最大连续计数查询

mysql - 为什么mysql解释说 'using index',而使用的索引不包含必填字段

c# - 构建搜索功能的最佳方式

sql - 重新编号文本列中的引用变量

search - lucene 怎么这么快计算文档的交集?

php - 将值插入两个相关表中

c++ - MySQL C++ 连接器 : How do I get the thread/connection Id?

php - 将二维数组插入mysql

sql-server - 使用 SQL Server 进行实时聚合和反规范化的架构推荐

php - 标准化 MySQL 全文分数