全文搜索不完全匹配

时间:2012-05-17 18:59:05

标签: mysql

我有一个名为“customers1”的MySQL表,它运行引擎MyISAM。我已经在列名,地址和zip上创建了一个全文索引。现在,该表中的一位客户就是我。我拼写我的名字“吉尔德布兰德”。现在我不能指望用户可以正确拼写我的名字,许多人可能写“Glidebrant”,但仍想找到我的。我怎么能在SQL中进行搜索?

如果我现在运行以下查询

SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('Gildebrand')

当然,它找到了我。但如果我拼错,“Glidebrand”,它找不到我。最好的办法是什么?

2 个答案:

答案 0 :(得分:2)

如果使用SOUNDEX() http://www.w3resource.com/mysql/string-functions/mysql-soundex-function.php

,我会说你可以从这样的结果中得到最接近的结果

答案 1 :(得分:1)

我有类似于你的通用搜索。这基本上就是我做的事情:

SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('?')
UNION
SELECT * FROM customers1 WHERE name LIKE ('?%')

这允许用户也只输入前缀。

如果用户意识到他们无法拼写您的姓名,但他们确信它以Gil开头,那么他们就可以输入。

如果您还想在其他列上支持前缀,可以添加其他UNION子句。