2015-02-06 2 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

Я бы добавил еще одну колонку в вашу базу данных, содержащую «нормализованную» версию каждого имени, а затем нормализовать каждый термин поиска, который вводит пользователь, и проверять соответствие с ним.

Нормализация может включать замену акцентированных символов для несогласованных эквивалентов, преобразование символов верхнего регистра в нижний регистр и удаление пробелов и дефис и т. Д. Таким образом вы могли бы поймать многие другие распространенные неправильные написания.

Смежные вопросы