MySQL - 具有特定搜索值 'course' 的 FULLTEXT 搜索问题

标签 mysql search full-text-search myisam match-against

我创建了下表。

CREATE TABLE `test` (
`name` VARCHAR(50) NOT NULL,
`id` INT(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
FULLTEXT INDEX `name` (`name`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

有以下数据

insert into test (name) values('apple');
insert into test (name) values('course');

我正在使用以下查询进行搜索。

select * from test  where MATCH (name) AGAINST ('apple' IN BOOLEAN MODE);
select * from test  where MATCH (name) AGAINST ('course' IN BOOLEAN MODE);

现在的问题是第一个选择查询返回了正确的行。但是第二个查询没有返回任何行。我用其他词进行了测试,它们工作正常。但是,如果数据包含“类(class)”一词,并且当我们搜索“类(class)”时,它不会返回任何行。

谁能帮我解决这个奇怪的问题?

最佳答案

不是最好使用like 运算符吗?

select * from test  where name LIKE 'course';

甚至 REGEXP

select * from test  where name RegexP 'course';

你可以试试:

select * from test  where MATCH (name) AGAINST ('course*' IN BOOLEAN MODE);

虽然它通常在部分单词搜索中失败最多......所以请向我们展示您表格中的一些示例数据。

宾果游戏:MYSQL 似乎充满了stop words .

所以这就是所说的和你需要做的:)

“从 MySQL 5.5.6 开始,如果 character_set_server 是 ucs2、utf16 或 utf32,则使用 latin1 加载和搜索停用词文件。如果任何表是使用 FULLTEXT 索引创建的,而服务器字符集是 ucs2、utf16 或 utf32 , 应该用这个语句修复..

修复表 tbl_name QUICK; "

关于MySQL - 具有特定搜索值 'course' 的 FULLTEXT 搜索问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14154803/

相关文章:

MySQL 分组 OR 和 AND 子句

java - 两个 "like"查询组合并排序

elasticsearch 向所有文档添加字段

mysql - 这条SQL中的 "t"指的是什么?

MySQL快速检索每组中的最后一条记录

android:根据服务器响应实现应用程序搜索建议

java - 仅当用户确认选择时才在 JComboBox 上处理 actionPerformed

amazon-web-services - 具有共享内容库的大型用户群的云搜索解决方案

MySQL boolean 模式匹配不返回任何内容

sql-server - MSSQL——使用 PK 创建 View