首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opencart -不考虑重音进行搜索

问Opencart -不考虑重音进行搜索
EN

Stack Overflow用户
提问于 2013-02-07 06:30:41
回答 2查看 302关注 0票数 10

已经有人写过很多次了,Opencart的基本搜索还不够好。好吧,我遇到过这个问题:

当客户在我的国家(斯洛伐克(UTF8))搜索产品时,他可能不会使用变音符号。所以他/她写下"cucoriedka“却一无所获。

但是,在数据库中有名为"čučoriedka“的产品,我希望它也能显示出来,因为这就是他要找的。

你知道怎么做这件事吗?越简单越好!

EN

回答 2

Stack Overflow用户

发布于 2015-08-24 07:01:56

我对斯洛伐克语一无所知,很抱歉。但是,斯洛伐克校对utf8_slovak_ci将斯洛伐克字母č视为与c不同。(在电话簿中,以C开头的姓氏是否都在以C开头的姓氏之后?)他们很可能会这么做。MySQL的创建者当然认为他们是这样做的。)

排序规则utf8_general_ci对č和c的处理方式相同。这里有一个sql小提琴演示了这一切。http://sqlfiddle.com/#!9/46c0e/1/0

如果将包含产品名称的列的排序规则更改为utf8_general_ci,则会得到一个更便于搜索的表。假设您的表名为product,其中包含名称的列名为product_name。然后,这条SQL数据定义语句将按照您的要求转换列。您应该查找列的实际数据类型,而不是像我在本例中那样使用varchar(nnn)。

代码语言:javascript
复制
 alter table product modify product_name varchar(nnn) collate utf8_general_ci

如果不能修改这个表,那么可以像这样修改WHERE子句,显式地指定排序规则。

代码语言:javascript
复制
WHERE 'userInput' COLLATE utf8_general_ci = product_name

但这将比更改列排序规则的搜索速度更慢。

票数 5
EN

Stack Overflow用户

发布于 2015-08-24 06:06:02

您可以使用MySQL的SOUNDEX()或SOUNDS LIKE函数。

这些函数比较语音。

除了英语之外,soundex的准确性是值得怀疑的。但是,如果我们像这样使用它,它可以得到改进

代码语言:javascript
复制
select soundex('ball')=soundex('boll') from dual

也可以使用SOUNDS LIKE。

结合使用SOUNDEX()和SOUNDS LIKE将提高准确率。

有关详细信息或mysql-sounds-like-and-soundex,请参阅MySQL文档

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

https://stackoverflow.com/questions/14740131

复制
相关文章

相似问题

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