как создать список предложений для автоматического предложения/автозаполнения

Я хотел бы реализовать функцию автоматического предложения на веб-сайте с пользовательской корзиной/бэкэнд-системой. Система позволяет ввести слово, которое может поставить заказчик, и список предложений; например, «кал» для слов и «кальций, калория» для предложений. У меня 6000 продуктов, и я не знаю, как составить такой список. Если мы возьмем пример с «кальцием», должен ли я нарезать его на «ca», «cal», «calc» и создать для него предложения? Кроме того, как мне быть с такими словами, написанными с ошибками, как «кальций»? Есть ли способ автоматизировать этот процесс? Пожалуйста, порекомендуйте. Спасибо.


person Dmitry    schedule 12.05.2011    source источник


Ответы (2)


Для начала включите триггер автозаполнения только при вводе определенного количества символов. В противном случае вы будете выполнять поиск a, который может дать больше результатов, чем необходимо.

Для сопоставления слов, если вы используете базу данных, они обычно поддерживают сравнение LIKE для сопоставления с подстановочными знаками:

SELECT `name` FROM `products` WHERE `name` LIKE 'cal%'

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

Для слов с ошибками вы можете попробовать что-то вроде расстояние Левенштейна, которое показывает, насколько близко написаны два слова.

person onteria_    schedule 12.05.2011

Auto Suggest может быть реализован с использованием структур данных, таких как Trie, троичное дерево поиска. Обращение к БД не является эффективным решением и требует интенсивного использования ЦП.

person BJC    schedule 29.03.2013