MySql“;匹配“;不使用特定的词
我在一个mysql查询中遇到了一个奇怪的问题,使用MATCH-country可以处理某些单词,而不能处理其他单词,这是返回0行的特定查询:MySql“;匹配“;不使用特定的词,mysql,full-text-search,Mysql,Full Text Search,我在一个mysql查询中遇到了一个奇怪的问题,使用MATCH-country可以处理某些单词,而不能处理其他单词,这是返回0行的特定查询: SELECT * from series WHERE MATCH (name_e,name_a) AGAINST ("One"); 1-我使用的是utf8\u general\u ci,因此它不是区分大小写的问题 2-其他3个字符的搜索返回propper结果(例如“Key”),因此这不是最小字符数问题 以下是表格结构: CREATE TABLE `ser
SELECT * from series WHERE MATCH (name_e,name_a) AGAINST ("One");
1-我使用的是utf8\u general\u ci
,因此它不是区分大小写的问题
2-其他3个字符的搜索返回propper结果(例如“Key”),因此这不是最小字符数问题
以下是表格结构:
CREATE TABLE `series` (
`series_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`brand_id` int(10) unsigned NOT NULL,
`merchandise_id` int(10) unsigned NOT NULL,
`name_a` varchar(45) NOT NULL,
`name_e` varchar(45) NOT NULL,
`desc_a` text,
`desc_e` text,
`added_by` int(11) NOT NULL DEFAULT '4',
`approved` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`series_id`),
KEY `uniqueEntry` (`brand_id`,`name_e`),
FULLTEXT KEY `nameIndex` (`name_e`,`name_a`)
)
这是一些用于测试的样本数据:
INSERT INTO `series`(`series_id`,`brand_id`,`merchandise_id`,`name_a`,`name_e`,`desc_a`,`desc_e`,`added_by`,`approved`)
VALUES ('9', '39', '164', 'Aspire One', 'Aspire One', NULL, NULL, '4', '1');
INSERT INTO `series`(`series_id`,`brand_id`,`merchandise_id`,`name_a`,`name_e`,`desc_a`,`desc_e`,`added_by`,`approved`)
VALUES ('10', '54', '164', 'One', 'One', NULL, NULL, '4', '1');
INSERT INTO `series`(`series_id`,`brand_id`,`merchandise_id`,`name_a`,`name_e`,`desc_a`,`desc_e`,`added_by`,`approved`)
VALUES ('284', '70', '173', 'Key', 'Key', NULL, NULL, '53', '1');
试试看
SELECT * from series
WHERE name_e LIKE '%One%'
OR name_a LIKE '%One%'
全文不索引4个字母以下的单词 “一”在MySQL stopwords文件中
过滤掉停止字以防止常用字影响结果
您可以使用以下设置设置自己的停止字列表:
要覆盖默认的停止字列表,请设置ft_stopword_文件系统变量
它返回所需的结果,但在我的情况下,我需要使用特定的查询,即使用MATCH进行全文搜索谢谢,我在my.cnf文件中添加了
ft\u stopword\u file=”“
,重新启动了mysql,并对表执行了优化
操作,它可以按照我的需要工作。