Задать вопрос
@CybernatiC
Веб-разработчик

Как сделать поиск сайта php mysql без Sphinx и подобных?

Добрый воскресный вечер уважаемые коллеги!
Стоит задача сделать поиск на сайте релевантным.
Сидим на shared хостинге и устанавливать sphinx нет возможности.
Пожалуйста подскажите алгоритмы как Вы бы реализовали подобный поиск.
Чтобы при введении "дастаука шашлик" поиск вывел результаты по запросу "доставка шашлыка" :-)
Буду очень признателен за куски кода.
  • Вопрос задан
  • 410 просмотров
Подписаться 2 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 4
Не ну просто поиск сделайте по БД текстовый с индексом FULLTEXT а из исправления ошибок что на шареде бы работало... только в яндекс-спеллер запросы отправлять но и он ошибается.
В общем, поиск можно, исправление ошибок - нет.
Ответ написан
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Совет: переходите на Laravel
Пример генерации запроса Eloquence Searchable:

SELECT *
FROM
  (SELECT `product_products`.*,
          max(CASE WHEN `product_products`.`name` = 'достаука'
              OR `product_products`.`name` = 'шашлик' THEN 150 ELSE 0 END + CASE WHEN `product_products`.`name` LIKE 'достаука%'
              OR `product_products`.`name` LIKE 'шашлик%' THEN 50 ELSE 0 END + CASE WHEN `product_products`.`name` LIKE '%достаука%'
              OR `product_products`.`name` LIKE '%шашлик%' THEN 10 ELSE 0 END) AS relevance
   FROM `product_products`
   WHERE (`product_products`.`name` LIKE '%достаука%'
          OR `product_products`.`name` LIKE '%шашлик%')
   GROUP BY `product_products`.`id`) AS `product_products`
WHERE `relevance` >= 2.5
ORDER BY `relevance` DESC
Ответ написан
frost18
@frost18
Программист PHP
Простого решения нет, если писать самому то получиться велосипед.
Ответ написан
Комментировать
@CybernatiC Автор вопроса
Веб-разработчик
Всем огромное спасибо =) интегрировал спеллер + релевантность mysql
все получилось.
До Sphinx конечно далеко, но пока на ранних стадиях стартапа этого достаточно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы