2014-10-17 56 views
0

我有一个表,比方说,城市名称。有些人有口音,空格,连字符,小帽,大号等...存储和搜索字符串的最佳做法mysql

另一方面,我有一个搜索引擎。

什么是最好和最快的方式来存储城市名称?

知道,如果有人正在寻找 “圣Locdu阿讷西” 或 “圣locdu阿讷西” 或 “圣Locdu乐老” 或“圣Locdu-LE -Vièux“,它将始终匹配相同的记录。

我想到有2列,一个用于显示,另一个用索引搜索,其中城市名称将被存储为“SAINTLOCDULEVIEUX”。

也许有一个功能我不知道或更好的方法来做到这一点?

感谢您阅读:)

回答

0

据我所知,这里没有一个本地MySQL功能。如果你为此使用MySQL,我会建议可能有两列:“显示”列,显示重音和标点符号的字符串,仅用于向用户显示,以及格式化的“查找”列,例如“圣徒本地人”。它查找然后可以通过格式化,用口音其非重音等效字符串代替输入的字符来完成,hiphens用空格等,和喜欢做的查询:

输入:“圣Locdu-”

查询:

SELECT * FROM City Where name LIKE '%saint locdu%';

当然这不是一个理想的解决方案。像这样的查找,如果你想以他们的方式做到这一点,最适合于像solr这样的数据结构和查询引擎,这是一种错字,并且对字符的宽容不够正确。不过,我很欣赏这不是你的问题,我只是认为我会把它作为一个脚注添加。

+0

谢谢你,我会再用两栏。 – user2462876 2014-10-22 17:19:10