1

我正在开发一种模糊搜索机制。我在数据库(mysql)(英文和俄文名称)中有汽车品牌/型号和城市 - 大约 1000 项。用户可以输入有错误或转译的单词。现在我正在从 db 中检索所有这些单词,并将循环中的每个单词与用户输入的单词进行比较(使用 livenstein 距离和其他函数)。有什么方法可以生成每个单词的多种形式(汽车品牌/型号)+ 有错误的单词,因为我想从 db 中检索这些单词(使用 like sql 运算符)。例如:我有汽车品牌:Toyota,我想生成 - Tokota, Tobota, Toyoba, Tayota, Тойота, Токота, Тобота(俄语) - 每个词有很多多种形式。用户可以输入任何这个词,我可以发现他的意思是丰田。

4

1 回答 1

2

SOUNDEX嗯,在 MySQL 中有一个函数被调用。我不知道这是你需要的。例如:

SELECT SOUNDEX('Toyyota') == SOUNDEX('Toyota')

这是来自 MySQL 文档

从 str 返回一个 soundex 字符串。听起来几乎相同的两个字符串应该具有相同的 soundex 字符串。一个标准的 soundex 字符串是四个字符长,但 SOUNDEX() 函数返回一个任意长的字符串。您可以在结果上使用 SUBSTRING() 来获得标准的 soundex 字符串。str 中的所有非字母字符都将被忽略。AZ 范围之外的所有国际字母字符都被视为元音。

这个函数,正如当前实现的那样,旨在与仅使用英语的字符串一起工作。其他语言的字符串可能不会产生可靠的结果。

参考:http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex

于 2013-08-18T05:39:59.423 回答