Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 非'的全文搜索;不完全匹配_Mysql - Fatal编程技术网

Mysql 非'的全文搜索;不完全匹配

Mysql 非'的全文搜索;不完全匹配,mysql,Mysql,我有一个名为“customers1”的MySQL表,运行引擎MyISAM。我已经在name、address和zip列上创建了全文索引。现在那张桌子上的一个顾客是我。我拼写我的名字“吉尔德布兰德”。现在我不能指望用户能正确拼写我的名字,很多人可能会写“Glidebrant”,但仍然想找到我的名字。如何在SQL中进行搜索 如果我现在运行以下查询 SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('Gildebrand') 当

我有一个名为“customers1”的MySQL表,运行引擎MyISAM。我已经在name、address和zip列上创建了全文索引。现在那张桌子上的一个顾客是我。我拼写我的名字“吉尔德布兰德”。现在我不能指望用户能正确拼写我的名字,很多人可能会写“Glidebrant”,但仍然想找到我的名字。如何在SQL中进行搜索

如果我现在运行以下查询

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子句