正在Mysql中搜索相似的字符串

问题描述 投票:2回答:4

人们对于如何搜索相同的词有不同的想法。

例如,Tri-Valley,Trivalley,Tri Valley(甚至可能有不正确的拼写)

当前,搜索是这样完成的>>

SELECT * FROM `table` WHERE `SchoolDistrict` LIKE '%tri valley%';  

是否有一种简单的方法可以说'空格破折号或没有空格'而无需写出三个类似的语句?

似乎很容易做到:

SELECT * FROM `table` WHERE `SchoolDistrict` LIKE '%tri%valley%';

但是仅当初始输入为'tri-valley'或'tri valley'时,此方法才有效。如果初始输入为'trivalley',我不知道将%放在何处(理论上,实际上,我这样做,只看了十几个不同的学区,但我想解决更大的问题)

人们对于如何搜索相同的词有不同的想法。例如Tri-Valley,Trivalley,Tri Valley(甚至可能有不正确的拼写)当前,搜索是通过SELECT * ...

mysql search
4个回答
3
投票

您可以考虑使用SOUNDEX,如果拼写错误很多,可以考虑使用SOUNDS LIKE。如果您有很多行(甚至没有),将SOUNDEX的输出存储在另一列中可能是明智的。


1
投票

MySQL有一个叫做Sounds like的功能。


1
投票

这里的另一种选择是将问题从搜索中重选为可能的问题。如果您有一组学区,则生成一个下拉列表(如果列表很大,例如按县,然后按学区,则级联下拉列表),而不是让用户输入自由格式的文本来选择学区。用户选择适当的一个。将其用于“搜索”和数据输入以消除非规范的输入。显然,这仅在您可以枚举所有条目时才有效。


0
投票

您发布的第二条语句应该可以解决问题:

© www.soinside.com 2019 - 2024. All rights reserved.