我正在开发模糊搜索机制。我有汽车品牌/型号和城市数据库(mysql)(英文和俄文名称) - 约1000项。用户可以输入错误或转换的单词。现在我从db中检索所有这些单词,并将循环中的每个单词与用户输入的单词进行比较(使用livenstein距离和其他函数)。 有没有办法生成每个单词的多种形式(汽车品牌/型号)+有错误的单词,因为我想从db中检索这些单词(使用类似的sql运算符)。例如:我有汽车品牌:丰田和我想生成 - Tokota,Tobota,Toyoba,Tayota,Тойота,Токота,Тобота(俄语) - 每个单词的许多形式。用户可以输入任何一个单词,我可以发现它是丰田的意思。
答案 0 :(得分:2)
嗯,MySQL中有一个名为SOUNDEX
的函数。我不知道这是你需要的。
例如:
SELECT SOUNDEX('Toyyota') == SOUNDEX('Toyota')
这是来自MySQL文档
从str返回soundex字符串。听起来差不多的两根琴弦 同样应该有相同的soundex字符串。标准的soundex字符串 是四个字符长,但SOUNDEX()函数返回一个 任意长串。您可以在结果上使用SUBSTRING()来获取 一个标准的soundex字符串。 str中的所有非字母字符都是 忽略。 A-Z范围之外的所有国际字母字符 被视为元音。
目前实施的这项功能旨在与之合作 仅限英语的字符串。其他字符串 语言可能无法产生可靠的结果。
参考:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex