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

标签 mysql string indexing

我有一张表,其中包含城市名称。有些有重音符号、空格、连字符、小型大写字母、大写字母等...

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

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

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

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

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

感谢您的阅读:)

最佳答案

据我所知,MySQL 没有原生功能可以实现这一点。如果您为此使用 MySQL,我建议可能有两列:显示重音和标点字符串的“显示”列,仅对向用户显示有用,以及格式化的“查找”列,例如“saint locdu le vieux”。然后可以通过格式化和字符串替换输入字符来完成它的查找,其中带重音的输入字符为非重音的等效字符,带空格的 hihens 等,并执行如下查询:

输入:'Saint-Locdu-'

查询:

从名称类似“%saint locdu%”的城市中选择*;

这当然不是一个理想的解决方案。如果您想以规范的方式执行此类查找,则最适合像 solr 这样的数据结构和查询引擎。 ,这是防错字的并且可以容忍字符不完全正确。不过,我很高兴这不是你的问题,我只是想将其添加为脚注。

关于mysql - mysql 存储和搜索字符串的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26421577/

相关文章:

oracle - 未索引的外键导致 TM 队列争用

sql - 有没有办法在 SQL Server 中模拟在线索引重建而无需升级到 Enterprise?

mysql 可以将逗号值拆分为单个新列吗?

ruby - 无法在 Ruby 的字符串中按空格拆分/剥离,因为它是 NBSP 字符

python - Str split 并爆炸

arrays - Powershell 将字符串转换为数组

java - 如何使用Morphia框架在mongoDB项目中添加索引

php - 处理列的单个记录

mysql - Laravel 具有整数值的多个连接条件

mysql - Doctrine:两个数据库中两个实体之间的关系