2012-05-17 194 views
0

我有一个名为“customers1”的MySQL表,运行引擎MyISAM。我在列名,地址和邮编上创建了全文索引。现在这张桌子上的一位顾客就是我。我拼写了我的名字“Gildebrand”。现在我不能指望用户可以正确拼写我的名字,很多人可能会写“滑翔机”,但仍然想找到我的名字。我怎么能在SQL中进行搜索?全文搜索不完全匹配

如果我现在

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

运行下面的查询它找到我,当然。但是,如果我拼错,“Glidebrand”,它不会找到我。最好的办法是什么?

回答

1

我有类似你这样的通用搜索。这里基本上是我做的:

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

这允许用户只需输入一个前缀。

如果用户意识到他们不能拼写你的名字,但他们确信它以Gil开头,那么他们可以输入它。

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