首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用MATCH...AGAINST查询搜索文本?

如何使用MATCH...AGAINST查询搜索文本?
EN

Stack Overflow用户
提问于 2014-07-01 13:41:51
回答 3查看 59关注 0票数 0

代码语言:javascript
复制
id    name
---  ------
1    chinu
2    sanjib
3    chinmay

我的MYSQL查询

代码语言:javascript
复制
SELECT * FROM users WHERE MATCH (name) AGAINST ('chi' IN BOOLEAN MODE)

在上面的查询中,我得到了0记录。

我的输出就快到了

代码语言:javascript
复制
1   chinu
3   chinmay

如何使用MATCH...AGAINST查询获取我的实际记录?

编辑-如果我正在搜索chinu而不是chi,我将得到1条记录。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-01 13:45:49

您需要在“chi”中添加一个星号,以指示查询应该与包含字符串的所有内容匹配,而不仅仅是字符串本身。例如,仅仅使用字符串'chi‘将只与'chi’完全匹配。

将查询更改为:

代码语言:javascript
复制
 SELECT * FROM users WHERE MATCH (name) AGAINST ('chi*' IN BOOLEAN MODE)

你应该得到你期望的结果。

票数 2
EN

Stack Overflow用户

发布于 2014-07-01 13:45:17

我想你忘了+标志了:

代码语言:javascript
复制
SELECT * FROM users WHERE MATCH (name) AGAINST ('+chi' IN BOOLEAN MODE)

或者,如果它是一个确切的短语,使用双引号包围字符串:

代码语言:javascript
复制
SELECT * FROM users WHERE MATCH (name) AGAINST ('"chi"' IN BOOLEAN MODE)
票数 0
EN

Stack Overflow用户

发布于 2014-07-01 13:47:17

我是第一个承认这不容易找到的人。MySQL全文搜索使用一个名为ft_min_word_length的系统变量。默认值为4,如这里所示。

因为您正在搜索一个三个字符的单词,所以它没有被索引.因此找不到它。

更多信息可在文档中获得,介绍如何对搜索进行微调。但基本思想是,您需要更改参数的值并重新构建索引。

但是,对于特定的查询,只需包含通配符,其他答案中将对此进行解释。

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

https://stackoverflow.com/questions/24511773

复制
相关文章

相似问题

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