存储和搜索字符串mysql的最佳实践

时间:2014-10-17 09:06:22

标签: mysql string indexing

我有一张桌子,比方说,城市名称。有些有重音符号,空格,连字符,小号大写字母,大写字母等......

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

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

知道是否有人正在搜索“ Saint-Locdu-Le-Vieux ”或“ saint-locdu-le-vieux ”或“ Saint Locdu Le Vieux “或”Saînt-Locdu-Lé-Vièux“,它将始终匹配相同的记录。

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

也许有一个我不知道的功能或更好的方法吗?

感谢阅读:)

1 个答案:

答案 0 :(得分:0)

据我所知,没有本机MySQL功能。如果您正在使用MySQL,我建议使用MySQL可能有两列:“display”列显示重音和标点符号字符串,仅用于向用户显示,以及格式化的“查找”列,例如“saint locdu le vieux”。然后可以通过格式化和字符串替换输入字符来完成查找,输入字符带有非重音等效项,带空格的hiphens等的重音,并执行以下查询:

输入:'Saint-Locdu - '

查询:

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

这当然不是一个理想的解决方案。如果您想以规范的方式执行这些查找,则最适合数据结构和solr之类的查询引擎,这是一种抗错误并且对字符不太正确的宽容。但是,我很欣赏这不是你的问题,我只是想把它添加为脚注。