2012-05-17 243 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子句。