首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL全文搜索的奇怪结果,需要一个解释。

MySQL全文搜索的奇怪结果,需要一个解释。
EN

Stack Overflow用户
提问于 2010-08-31 12:25:22
回答 3查看 188关注 0票数 4

我的SQL查询

SELECT keyword

FROM table

WHERE MATCH (keyword)

AGAINST ('eco*' IN BOOLEAN MODE);

将单元格与以下单词匹配:economyecologyechoscopy(为什么?)、echo(为什么?)等。

其他SQL查询

SELECT keyword

FROM table

WHERE MATCH (keyword)

AGAINST ('eci*' IN BOOLEAN MODE);

将单元格与单词:echidna匹配。

然而,查询都与word ectoplasm不匹配。

为什么echoechoscopy匹配'eco*'echidna匹配'eci*'

我认为这个问题的关键因素是字母组合"ch“。

为什么它是这样工作的,我如何避免这种匹配?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-01 08:42:50

问题(特征?)在校对里。"c“和"ch”由于utf8_lithuanian_ci的校对而被同等对待。

编辑:

将排序规则更改为utf8_unicode_ci只修复某些问题。

真正的解决方案是使用utf8_bin,它匹配每个字符的二进制值,这意味着:

sensitive

  • diacritics敏感的
票数 1
EN

Stack Overflow用户

发布于 2010-08-31 14:03:21

它匹配的原因是匹配..。and使用正则表达式,*表示前面的char ("o")可以在0到9999999999999999999^次之间。你想要匹配的是

代码语言:javascript
复制
eco.*

将与“生态”和“生态”相匹配,而不是“回声”。

代码语言:javascript
复制
eco.+

将与“生态”和“生态系统”相匹配,而不是“生态”或“回声”。

票数 0
EN

Stack Overflow用户

发布于 2010-08-31 12:45:23

也许你可以试试这个

代码语言:javascript
复制
SELECT keyword FROM table WHERE keyword LIKE 'eco%';
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3608972

复制
相关文章

相似问题

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