Как настроить Sphinx, чтобы искал по тегам и выводил результаты по релевантности?
Добрый день!
Имеем задачу сделать поиск по базе запчастей от поставщиков, она заключается в следующем:
Наша компания занимается ремонтом мобильной техники и нам необходимо когда звонит клиент
по виду услуги и виду модели делать поиск по базе поставщиков (которые уже залиты и
проиндексированы sphinx'ом).
Пример:
iPhone 5s Замена дисплея
Мы обращаемся в нашу базу тегов где прописаны на услугу Замена дисплея следующие теги:
(диспл, тачскрин, сборе, lcd, touch, digitizer и так далее скажем штук 10 тегов)
Дальше мы дробим название бренда и модели по пробелам на теги - то есть получается массив
тегов:
Нам нужно, чтобы поиск был по тегам, и выводились результаты ТОП 100 подходящих по
релевантности.
Даже если скажем у нас в базе 300 строк, из них если искать по тегам чтобы все находились
теги в строках - даже если их будет 50 штук, то остальные 50 в любом случае должны быть
показаны (даже если не найден хотябы 1 тег) - то есть нужен вывод по релевантности. Если
например сделаем вывод 300 строк - то будут выведены все строки с БД, но показаны будут
по релевантности (количеству вхождений тегов, то есть Строка с наличием 10 тегов будет на
1 месте, с 9 на 2 и так далее.)
Мне кажется на Ваших объёмах проще сделать поиск средствами SQL сервера, чем подключать сфинкс.
Но если хочется всё таки Sphinx, то просто создайте в конфиге индекс получаемый средствами sql запроса и ищите по нему id записей упорядоченный по релевантности(в доке есть несколько родных ранкеров, думаю один из них вам подойдёт ну или напишите свой кастомный). После этого нужно будет все го лишь получить записи из базы по Id и предоставить пользователю.