首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配...而不是查找行

匹配...而不是查找行
EN

Stack Overflow用户
提问于 2012-06-07 17:44:14
回答 1查看 234关注 0票数 1

我正在尝试使用MATCH ... AGAINST进行搜索,但它没有给我任何结果。我已经将ft_min_word_len设置为2,将ft_stopword_file设置为""

这是我的表格:

代码语言:javascript
复制
CREATE TABLE `rw_jam_search` (
  `jam` int(10) unsigned NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`jam`),
  KEY `name` (`name`),
  FULLTEXT KEY `name_ft` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

表中我的数据:

代码语言:javascript
复制
jam name
53  Say Yes
54  testing
55  poijoik
56  stdd
57  Spartaaa!
58  Fearless
59  Mr. Mysterious
60  testmys
61  hello worlds

为什么我在这个查询中找不到"Say Yes“行?如果我使用LIKE js.name = 'say%',它就能正常工作。

代码语言:javascript
复制
SELECT *
FROM rw_jam_search js
WHERE MATCH(js.name) AGAINST ('say*' IN BOOLEAN MODE)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-07 20:00:03

默认缓存单词的最小长度为3,可在配置文件中修改:

代码语言:javascript
复制
[mysqld]
ft_min_word_len=3

因此,"say“一词不会被编入全文搜索的索引。如果您有权访问mySQL的存储文件,则可以使用:

代码语言:javascript
复制
myisam_ftdump rw_jam_search.MYI 0

列出将包含在全文搜索中的所有索引词。

因此,如果您尝试这个查询,它应该可以很好地工作:

代码语言:javascript
复制
SELECT * FROM rw_jam_search
WHERE MATCH(`name`) AGAINST('worlds')

编辑:与AGAINST()一起使用时,星号(*)与documentation非常不同。请检查documentation

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

https://stackoverflow.com/questions/10929375

复制
相关文章

相似问题

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