@iamvip

Как настроить Sphinx, чтобы искал по тегам и выводил результаты по релевантности?

Добрый день!

Имеем задачу сделать поиск по базе запчастей от поставщиков, она заключается в следующем:

Наша компания занимается ремонтом мобильной техники и нам необходимо когда звонит клиент
по виду услуги и виду модели делать поиск по базе поставщиков (которые уже залиты и
проиндексированы sphinx'ом).

Пример:

iPhone 5s Замена дисплея

Мы обращаемся в нашу базу тегов где прописаны на услугу Замена дисплея следующие теги:
(диспл, тачскрин, сборе, lcd, touch, digitizer и так далее скажем штук 10 тегов)

Дальше мы дробим название бренда и модели по пробелам на теги - то есть получается массив
тегов:

{iPhone, 5s, диспл, тачскрин, сборе, lcd, touch, digitizer}

Нам нужно, чтобы поиск был по тегам, и выводились результаты ТОП 100 подходящих по
релевантности.

Даже если скажем у нас в базе 300 строк, из них если искать по тегам чтобы все находились
теги в строках - даже если их будет 50 штук, то остальные 50 в любом случае должны быть
показаны (даже если не найден хотябы 1 тег) - то есть нужен вывод по релевантности. Если
например сделаем вывод 300 строк - то будут выведены все строки с БД, но показаны будут
по релевантности (количеству вхождений тегов, то есть Строка с наличием 10 тегов будет на
1 месте, с 9 на 2 и так далее.)

Никак не можем понять как настроить конфиг.

Очень просим помочь, заранее больше спасибо!
  • Вопрос задан
  • 2899 просмотров
Пригласить эксперта
Ответы на вопрос 2
opium
@opium
Просто люблю качественно работать
сфинкс по умолчанию сортирует по релевантности, либо под релевантностью вы подозреваете не релевантность.
Ответ написан
Комментировать
Мне кажется на Ваших объёмах проще сделать поиск средствами SQL сервера, чем подключать сфинкс.
Но если хочется всё таки Sphinx, то просто создайте в конфиге индекс получаемый средствами sql запроса и ищите по нему id записей упорядоченный по релевантности(в доке есть несколько родных ранкеров, думаю один из них вам подойдёт ну или напишите свой кастомный). После этого нужно будет все го лишь получить записи из базы по Id и предоставить пользователю.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы