Имена товаров сложные - `APK2R AP-1D APE2 Apecs`, например.
Можно сделать второе поле в таблице, дублирующее то, по которому хочется делать поиск, но в это поле заносить нормализованные (трансформированные) данные. Например: APK2R_AP_1D_APE2_APEC. То есть удалять спецсимволы, преобразовывать пробелы. Аналогично поступать с поисковым запросом. Кроме прочего, в это поле можно включить дополнительные тексты, например, заголовок и описание.
]]>Моя реализация поиска предусматривает сначала полнотекстовый поиск по имени продукта. И если там ничего не найдено - обычный like поиск. Но всё это бессильно против поиска по части имени с дефисом (и скорее всего есть какие-то ещё другие случаи). Т.е. поиск `AP-1D` ничего не даст. Как и поиск `AP1D` (пользователь легко может пропустить при поиске дефис)
Первый из списка выше - драйвер для Laravel Scout, который реализует идею полнотекстового поиска. Я подумал, что быть может я сам что-то делаю не так, но нет - поиск не работает достаточно точно. И результат тот же, что и у меня, даже немного хуже, т.к. не предусмотрена поиск like в случае неудачи полнотекстового поиска.
Дальше решил попробовать всеми восхваляемый вариант поиск с использованием Elasticsearch. И вот тут начались вопросы\проблемы с установкой.
1. Как запустить Elasticsearch локально? Указано, что он работает по-умолчанию через порт 9200.
2. Возможно ли потом будет запустить Elasticsearch на обычном виртуальном хостинге? Мой хостер hoster.by даёт много возможностей, но виратуальный хостинг - это не выделенный сервер, где можно всё крутить так, как хочется.