Mysql 非'的全文搜索;不完全匹配
我有一个名为“customers1”的MySQL表,运行引擎MyISAM。我已经在name、address和zip列上创建了全文索引。现在那张桌子上的一个顾客是我。我拼写我的名字“吉尔德布兰德”。现在我不能指望用户能正确拼写我的名字,很多人可能会写“Glidebrant”,但仍然想找到我的名字。如何在SQL中进行搜索 如果我现在运行以下查询Mysql 非'的全文搜索;不完全匹配,mysql,Mysql,我有一个名为“customers1”的MySQL表,运行引擎MyISAM。我已经在name、address和zip列上创建了全文索引。现在那张桌子上的一个顾客是我。我拼写我的名字“吉尔德布兰德”。现在我不能指望用户能正确拼写我的名字,很多人可能会写“Glidebrant”,但仍然想找到我的名字。如何在SQL中进行搜索 如果我现在运行以下查询 SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('Gildebrand') 当
SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('Gildebrand')
当然,它找到了我。但如果我拼错了“Glidebrand”,它就找不到我了。最好的方法是什么?如果使用
SOUNDEX()
我会说,如果使用SOUNDEX()
我有一个类似于您的通用搜索,那么您可以从这样的结果中得到最接近的结果。我基本上是这样做的:
SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('?')
UNION
SELECT * FROM customers1 WHERE name LIKE ('?%')
这允许用户也只需输入前缀
如果用户意识到他们不能拼写你的名字,但他们确定它以Gil
开头,那么他们可以直接键入
如果您还想在其他列上支持前缀,可以添加额外的UNION子句。我有一个与您类似的通用搜索。我基本上是这样做的:
SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('?')
UNION
SELECT * FROM customers1 WHERE name LIKE ('?%')
这允许用户也只需输入前缀
如果用户意识到他们不能拼写你的名字,但他们确定它以Gil
开头,那么他们可以直接键入
如果希望在其他列上也支持前缀,则可以添加其他UNION子句