Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 20.10.2020 13:08:08

Laravel и elasticsearch?

Пытаюсь разобраться, но пока без результатов. Нужды моего поиска сводятся к тому, чтобы находить товары по их имени. Казалось бы, что тут легко подойдёт MySQL FULLTEXT, но нет. Имена товаров сложные - `APK2R AP-1D APE2 Apecs`, например.

Моя реализация поиска предусматривает сначала полнотекстовый поиск по имени продукта. И если там ничего не найдено - обычный like поиск. Но всё это бессильно против поиска по части имени с дефисом (и скорее всего есть какие-то ещё другие случаи). Т.е. поиск `AP-1D` ничего не даст. Как и поиск `AP1D` (пользователь легко может пропустить при поиске дефис)
Первый из списка выше - драйвер для Laravel Scout, который реализует идею полнотекстового поиска. Я подумал, что быть может я сам что-то делаю не так, но нет - поиск не работает достаточно точно. И результат тот же, что и у меня, даже немного хуже, т.к. не предусмотрена поиск like в случае неудачи полнотекстового поиска.

Дальше решил попробовать всеми восхваляемый вариант поиск с использованием Elasticsearch. И вот тут начались вопросы\проблемы с установкой.

1. Как запустить Elasticsearch локально? Указано, что он работает по-умолчанию через порт 9200.
2. Возможно ли потом будет запустить Elasticsearch на обычном виртуальном хостинге? Мой хостер hoster.by даёт много возможностей, но виратуальный хостинг - это не выделенный сервер, где можно всё крутить так, как хочется.

Не в сети

#2 20.12.2020 21:48:05

Re: Laravel и elasticsearch?

Elasticsearch - это серверный инструмент, способный выполнять полнотекстовый поиск на очень высокой скорости. Он работает на Apache Lucene (библиотеке полнотекстового поиска с открытым исходным кодом). Он может достичь этой скорости, потому что вместо поиска всего слова, соответствующего желаемому результату, из всей базы данных, он использует индексирование.

Не в сети

#3 21.12.2020 20:51:06

Re: Laravel и elasticsearch?

Имена товаров сложные - `APK2R AP-1D APE2 Apecs`, например.

Можно сделать второе поле в таблице, дублирующее то, по которому хочется делать поиск, но в это поле заносить нормализованные (трансформированные) данные. Например: APK2R_AP_1D_APE2_APEC. То есть удалять спецсимволы, преобразовывать пробелы. Аналогично поступать с поисковым запросом. Кроме прочего, в это поле можно включить дополнительные тексты, например, заголовок и описание.

Не в сети

Подвал раздела