我有搜索输入,您可以搜索葡萄酒。我有一些葡萄酒包含é
等字符(例如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
还能解析包含é
的葡萄酒的能力?
答案 0 :(得分:1)
我会在数据库中添加另一列,其中包含每个名称的“标准化”版本,然后规范化用户输入的每个搜索词,并使用该列检查匹配。
规范化可能涉及将重音字符替换为非重音等价物,将大写字符转换为小写字母,删除空格和连字符等,这样就可以捕捉到许多其他常见的错误拼写。