2015-02-06 107 views
0

我有一個搜索輸入,您可以在其中搜索葡萄酒。我有一些葡萄酒含有é(例如Dom Pérignon)等字符。解析與常規字符匹配的特殊字符

目前,如果我鍵入Dom Perignon話,我不會得到上面的例子酒。但我想達到的目的是,如果我輸入e代替é我仍然會得到Dom Pérignon酒。

的搜索機制本身是基本的。

輸入:

<input id="search" type="text" placeholder="Search for wine or producer..." ng-change="search()" ng-model="data.search"> 

和SQL查詢:

DB.query("SELECT id, name, ... FROM wines WHERE name LIKE ? OR house_name LIKE ? LIMIT 20", [searchFilter + '%', searchFilter + '%']) 

我怎麼能做到這一點打字e也將解析包含é葡萄酒的能力嗎?

回答

1

我會追加一欄包含每個名稱的「規範化」版本的數據庫,然後規範化用戶輸入的每一個搜索詞,使用檢查匹配。

正常化可能涉及的重音等同替換重音符號,轉換大寫字母爲小寫,並且去掉空格和連字符等,這樣你能趕上其他許多常見的錯誤拼寫。