我无法确定在选择查询中选择结果时是否可以强制mysql将某些指定字符串视为相同。
例如,我有一个包含单词“trachiotomy”的列,但由于语言的性质,搜索查询很可能是“trahiotomy”(注意缺少c)。
有什么方法可以强制查询识别出另一个字母的任何模式? 例如,将“ach”字母序列中的任何实例与“ah”匹配 - 反之亦然。从本质上讲,无论它是如何写的,都要强迫它。
另一个例子是Archon这个词 - 我也希望与Arhon匹配。 因此,如果用户输入是Archon,它将匹配数据库数据Arhon,反之亦然。
我尝试了soundex,它确实匹配了一些实例,但似乎由于算法的工作方式,它无法在所需匹配字符串位于单词开头的情况下进行。
例如,“Chorevo”这个词不能匹配“Horevo”这个词,除非我能以某种方式强迫它认为“chor”等于“hor”,反之亦然。
我正在阅读REGEXP以查看它是否可以以某种方式匹配。 (就像是 REGEXP'arch','arh')
此时我正在使用全文匹配查询,但如果证明这是一个问题,可能会改变它。
我不确定我是否明确表达了这一点,但我将不胜感激。
答案 0 :(得分:0)
这称为语音匹配。 MySQL在soundex(str)
函数和a SOUNDS_LIKE b
子句中实现了相对原始的版本(这只是soundex(a) = soundex(b)
的简写。本质上,这种匹配是特定于语言的,并且MySQL实现是设计的对于英语单词,因此可能无法在您的情况下工作。
或者,您可以研究/编写自己想做的转换,并在保存到数据库之前将其应用于数据(在单独的列或表中)。