Tag: поиск

Похоже нашлась замена для Sphinx Search

Долгое время для организации поиска по сайту использовал Sphinx Search. Легковесных альтернатив у этой штуки нет. Всякие эластики для нормальной работы требуют кластер, что для простых проектов жирновато. Из минусов - закрытый процесс разработки и очень нерегулярные релизы.

Недавно в очередной раз проверял альтернативы, и обнаружил github.com/manticoresoftware/manticoresearch. Оказывается сфинкс форкнули, и решили все нюансы, от которых у меня пригорало.

В качестве бонуса - в Мантикоре реализовали перколатор (обратный поиск). Это когда люди говорят “хочу отслеживать поисковый запрос” и получают уведомление при появлении новых объявлений (может иметь смысл для барахолки). То есть, вместо поиска тысяч документов по одному запросу проверяется каким запросам из многих тысяч соответствует один документ.

Будем переезжать. По крайней мере уйдет головная боль с поддержкой сфинкса, и все будет по-настоящему опенсорсное, как я люблю.

Sphinx search - срываем покровы

Сегодня обсудили с Андреем Аксеновым мои тест-кейзы для поиска. Если ограничить фишки только задачами этого форма, то добавится вот что:

  • обработка словоформами составляющих blend-characters (которые слева и справа от минуса)
  • обработка регулярками входных данных (для нормализациии чисел, размерностей и т.п.)
  • появление для blend-characters третей формы, когда минус “схлопывается” (либо, как вариант - возможность это задать регуляркой.
  • с тех же регулярок - возможность построить собственные аналоги blend-characters (одновременно несколько форм слова в индексе)
  • в некоторых местах - уточнен порядок наложения словарей, стеммера, исключений и т.п.

По срокам - до нового года. Это только те вещи, у которых растут ноги от моих задач. Остальные секреты не мои, поэтому рассказывать буду только за деньги 😃 .

Встал на извилистую тропинку "русификации" поиска

Сегодня 2 часа трепались с сэром Аксёновым, чего можно улучшить в русском поиске сфинкса. Самое веселое, что он сказал, что из нашего разговора вынес для себя что-то полезное. А мне казалось, что процесс был исключительно односторонний. В смысле, он учил меня уму-разуму.

В общем, смысл такой, что в итоге куча проблем упирается в базы (всякие словари). Которых нет. Причем для natural language search базы слепить почти нереально, но для более узких задач можно обойтись словарями попроще. Хотя нарабатывать их все равно понадобится.

Чисто условно, процесс можно поделить на 2 части - индексирование и ранжирование. Для хорошей индексации надо хотя бы правильно разбирать фразы на слова. Причем, если учесть, что у нас Savage пишут как савадж, и еще склоняют - получается весело. Есть тонны нюансов с дробными числами, которые пишут то через точку, то через запятую. И вообще много интересного и противоречивого.

В общем, завел на гитхабе репозиторий, куда скинул статистику запросов за год. Сделал по ней несколько базовых сортировок, и написал там на бамажке типовые косяки, которые надо прорабатывать. Адрес тут:

github.com/rcdesign/search-tune/