Все потоки
Поиск
Написать публикацию
Обновить
1

Sphinx *

Система полнотекстового поиска

Сначала показывать
Порог рейтинга
Уровень сложности

Sphinx — Распределённый поиск. Выполнение REPLACE для distributed индекса

Время на прочтение3 мин
Количество просмотров11K
Статья нацелена на тех кто уже знает что такое Sphinx и SphinxQL
Цель: Обеспечить непрерывность работы поиска по сайту с помощью Sphinx в момент проведения технических работ над одной из нод Sphinx кластера.

Sphinx отличный инструмент для организации поиска по сайту. В проекте в котором я участвую поиск объявлений происходит с помощью Sphinx. Объявления хранятся в бд в EAV модели а поиск по ним выполняет Sphinx затем объявления извлекаются по найденным сфинксом идентификаторам. Таким образом если Sphinx перестанет работать то это скажется на всём сайте.

Для работы используются rt индексы sphinx для моментального внесения изменений в поисковую выдачу если какое либо объявление будет отредактировано или забанено. Пока это работало на одной ноде всё было хорошо до тех пор пока не возникало необходимости внести изменения в саму структуру индексов. Для изменения списка атрибутов в поисковом индексе необходимо было править конфигурацию, перезапускать сфинкс и выполнять переиндексацию объявлений. Для того чтобы это производить без остановки работы сайта решено было построить кластер с одной главной нодой фактически выполняющей роль балансировщика и двумя дочерними нодами содержащими индекс и являющимися зеркальными между собой.
Читать дальше →

import sphinxapi без танцев или простая установка sphinxapi.py через pip

Время на прочтение1 мин
Количество просмотров4.4K
Немного облегчил установку sphinxapi.py через pip.
Просто
pip install https://github.com/Romamo/sphinxapi/zipball/master

Используем
import sphinxapi

Читать дальше →

Embedded Sphinx, или поиск на роутере

Время на прочтение29 мин
Количество просмотров12K
Поисковый сервер Sphinx (sphinxsearch) позиционируется как система, весьма неплохо масштабируемая под высокие нагрузки и большие объёмы индексов. В целом это неплохо — но иногда под рукой нет машины с 16-ядерным процессором и 256Гб оперативки. А что делать, если ядро всего одно? А если и с объёмом памяти не очень? А если это не сервер и даже не средний PC, а вообще роутер на SoC, с далеко не самым быстрым «камнем», и где всего 32Мб оперативки, да и ту нужно делить с другими процессами и системой? Взлетит ли в таком случае поисковик? Будет ли работать? Оправдано ли?
Да, взлетит. Да, будет работать. Да, вполне оправдано.
Расскажу, как

Sphinx для ASP.NET через jTemplates

Время на прочтение7 мин
Количество просмотров11K

Есть у нас хобби — развивать интернет-магазин по продаже напитков и продуктов оптом.
Товары у нас появляются путем привлечения поставщиков и размещения их товаров в магазине.
Клиенты — владельцы ресторанов и кафе, которые заказывают товары оптом с доставкой на следующий день.
Когда количество позиций по товарам перевалило за 20 тыс., поиск через like в MS SQL стал слишком уж неверный, тем более когда поставщики загружали товар с ошибками или названия товаров были латиницей/кириллицей. После месяца различных ухищрений в процедуре поиска с конвертацией latin-cyrilic-latin, исправления грамматических ошибок, мы в конце концов осознали, что это тупиковый путь развития поиска.
Читать дальше →

Searchanise: Поиск для e-commerce, бесплатно (без СМС)

Время на прочтение3 мин
Количество просмотров14K
Привет, Хабр!

Представляем вашему вниманию Searchanise — поисковый сервис, созданный специально для интернет-магазинов. Бесплатный, совсем-совсем.

Проект уже далеко не в тестинге, а вполне в продакшне: прямо сейчас полторы тысячи онлайн-магазинов используют Searchanise. И это только начало (по крайней мере, мы на это надеемся).

Searchanise

Читать дальше →

Реализация условия «ИЛИ» в SphinxQL

Время на прочтение1 мин
Количество просмотров10K
SQL-подобный язык SphinxQL пока не поддерживает условие «OR» в выражении «WHERE». То есть при запросе к поисковому индексу нельзя написать нечто вроде

SELECT * FROM `goods_index` WHERE `price` > 100 OR `price` = 0;
выбрать из индекса все товары, с ценой большее 100 тугриков или если цена не указана

Но выходы, конечно, есть: использовать вычисления. Перепишем запрос для придуманного мною примера в таком виде:
Читать дальше →

Поиск через sphinx в django 1.6 admin

Время на прочтение3 мин
Количество просмотров12K
Задача: реализовать полнотекстовый поиск в админке django.
Пример модели, по которой будем делать поиск:
class Movie(models.Model):
    title_en = models.CharField(max_length=255, null=True)
    title_ru = models.CharField(max_length=255, null=True)
    year = models.PositiveSmallIntegerField(null=True)

Читать дальше →

Sphinx встреча (Москва, 8 мая)

Время на прочтение1 мин
Количество просмотров3.2K
8 мая в 19.00 планируем устроить небольшую Sphinx-оводческую встречу в Москве. Еду в гости в Сотмаркет; говорят, у них из 500к уников каждый второй пользуется поиском; поэтому есть, о чем поговорить.

Для разгона я буду рассказывать про новые возможности версии 2.1 (за почти что полтора года между релизами их скопилось немало!), затем вопросы, мордобой, прочее неформальное общение. Приглашающая сторона только что подтвердила мероприятие и сказала, что смогут принять от 40 до 50 гостей. Так что если есть интерес, добро пожаловать!

Заявки кидать Вадиму Крючкову по адресу kruchkov.v@sotmarket.ru, нужно ФИО (для списка на охрану) и контактный телефон. Лучше успеть до 12:00 дня 8 мая. Засядем в головном офисе Сотмаркета по адресу г.Москва, Старопетровский проезд 7а, стр.30, м.Войковская. Для заблудившихся, телефон для связи 8-903-572-4143.

До встречи!

Полнотекстовый поиск в MongoDB

Время на прочтение7 мин
Количество просмотров66K
В данной статье будет рассмотрена одна из новых возможностей MongoDB версии 2.4 — полнотекстовый поиск. Большая часть этой статьи будет вольным переводом документации, которая, к слову, очень подробная, но разрозненная. Здесь все будет собрано вместе. Так как этого для полноценной статьи мне показалось мало, я решил сравнить МонгоДБ с другой популярной программой для текстового поиска — Sphinx. Мое сравнение будет очень поверхностным, так как со Сфинксом я раньше не работал. Создам таблицу с 16 000 000 записей и посмотрю, кто быстрее.

image

Читать дальше →

Как подружить Django и Sphinx?

Время на прочтение5 мин
Количество просмотров6.2K

Предыстория


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

Решил поискать, а что же всё-таки есть из готовых решений? Оказалось, прямо скажем, не густо: django-haystack и django-sphinx. Ранее достоинства и недостатки обоих уже перечисляли, поэтому не буду повторяться.

Потратив какое-то время на чтение блогов и форумов, решил всё-таки попробовать django-sphinx, т. к. в django-haystack, насколько мне известно, с поддержкой Sphinx до сих пор не очень.

Автор же django-sphinx давно забросил свой проект, но есть множество форков, и, говорят, что пользоваться им вполне возможно. Я выбрал тот, что был, хм, посвежее и попытался подключить его к своему проекту.
Но не тут-то было

Установка SphinxSE на Percona Server

Время на прочтение3 мин
Количество просмотров7.2K
Ни Sphinx, ни Percona Server в особом представлении не нуждаются. SphinxSE — не основной, но в некотором роде более удобный интерфейс доступа к Sphinx searchd, оформленный в виде storage engine плагина MySQL.

В документации сфинкса описан процесс установки SphinxSE, но он не работает. Под катом короткая инструкция по связке перконы со сфинксом, которая сработала у меня и, возможно, сбережет кому-нибудь несколько часов здорового сна.
Читать дальше →

Как подружить Sphinx с OpenShift для ThinkingSphinx под Rails

Время на прочтение3 мин
Количество просмотров3.3K
Для стейджинга моих небольших проектов на Rails я использую Openshift. Впринципе для небольших проектов он очень удобен — удобный деплой, все самое необходимое из коробки. Чего еще душе может быть необходимо? Но душа захотела сфинкса, при том очень сильно хзахотела. Так как среди картриджей я сфинкса не обнаружил, то пошел в google за советом.
А в гугле ничего… Ну или почти ничего. Все советовали поднимать DIY, накатывать все вручную, некоторые из моих знакомых советовали пересесть на AWS, но я в упор не хотел признавать, что под OpenShift нельзя поднять сфинкс. А так как приложение уже крутилось под сборкой для рельс то и DIY создавать не хотелось и я, стал думать как же все-таки поднять sphinx в уже готовой среде.
Под катом то, что я придумал.
Читать дальше →

Мониторим количество документов в индексах Sphinx'а

Время на прочтение1 мин
Количество просмотров3.1K
Всем привет.
Если в своих проектах вы используете чудесный поисковый движок Sphinxsearch, а различные параметры системы мониторите при помощи Munin этот пост для вас. Хочу анонсировать свой посильный вклад в opensource — плагин к Munin'у, рисующий графики с количеством документов в индексе. Скачать плагин можно по этой ссылке.
Читать дальше →

Ближайшие события

Улучшаем релевантность поиска в sphinxsearch

Время на прочтение4 мин
Количество просмотров59K
Sphinxsearch является поисковым движком для быстрого fulltextsearch, может получать данные из mysql, oracle и mssql, может выступать сам хранилищем(realtime индексы). Также sphinx имеет режим работы через api и через sphinxql — аналог протокола sql(с некоторыми ограничениями), что позволяет подключить поиск через sphinx на сайте с минимальным изменением кода. Это один из немногих великих, крупных и открытых проектов разработанный в России. На моей жизни я видел как sphinx обрабатывает порядка 100-200 поисковых запросов на 2 миллиона записей из mysql и при этом сервер свободно дышал и его не тошнило, mysql начинает умирать уже на 10 запросах в секунду на аналогичном конфиге.

Основная проблема документации sphinx на мой взгляд малое количество примеров для большинства интересных настроек, сегодня постараюсь рассказать в примерах о них. Опции которые я затрону касаются в основном алгоритмов и вариаций поиска. Все кто плотно работает со sphinx не узнают ничего нового, а новички надеюсь смогут улучшить качество поиска на своих сайтах.

Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных, второй производит поиск по построенном индексу. А теперь перейдем к настройкам поиска в sphinx.

morphology

Позволяет задать морфологию слов, я использую только стемминг. Алгоритм стемминга с помощью набора правил для языка обрезает окончания и суффиксы. Стемминг не использует готовые базы слов, а основан на определенных правилах обрезания для языка, что делает его маленьким и быстрым, но это же и добавляет ему минусы так как он может совершать ошибки.

Пример нормализации слова стеммингом на русском.
Слова “яблоко”, “яблока”, “яблоку” будут обрезаны в “яблок” и любой поисковый запрос с вариацией слова “яблока” будет тоже нормализован и найдет записи со словами которые были описаны выше.
Читать дальше →

Как найти девушку за 250 микросекунд

Время на прочтение4 мин
Количество просмотров89K
В отличие от Европы и Америки в России к сайтам знакомств преобладает осторожное отношение. Однако, надежда нажать на волшебную кнопочку и найти себе любовь не гаснет в сердцах многих. И мы должны эту надежду оправдывать. Конечно, сразу найти идеально подходящую “половинку” мы не обещаем, но предложить десятки, сотни или в отдельных случаях тысячи вариантов, отвечающих именно вашим запросам, просто обязаны. Что и делаем, причем очень быстро.

Средний поиск по базе из 11 миллионов анкет, имеющих от 4 до 30 параметров каждая, занимает у нас в среднем 3.5 милисекунды. И при этом кроме поиска демон-серчер «Мамбы» выполняет следующие, в том числе не вполне традиционные задачи:
  • для каждой конкретной анкеты выдает ее место в поиске (каждый пользователь, заходя в свою анкету, видит сообщение «Вы находитесь на N месте в поиске»)
  • выдает конкретную анкету из списка по первичному ключу
  • производит непосредственный поиск анкеты по заданным параметрам

Несмотря на то, что наш поиск с самого начала разрабатывался собственными силами, время от времени возникали мысли использовать что-то уже известное, обкатанное и гарантированно эффективное. Ну, а если мы задумываемся о поиске, первым в голову приходит Sphinx.
Читать дальше →

Сегодня IndexTank выключает все свои сервера

Время на прочтение1 мин
Количество просмотров1.4K
В октябре 2011 года профессиональная социальная сеть LinkedIn купила компанию IndexTank, которая занимается производством поисковых технологий. Подробнее про поглощение можно почитать тут.


Согласно договору сегодня IndexTank завершает свое существование как сервис.

Как сообщалось в @IndexTank на прошлой неделе:

IndexTank will be shutting down it's service on Tuesday, April 10th 2012 at 4PM (Pacific). email support@indextank.com for questions.


В первую очередь интересно будет узнать куда будут мигрировать такие крупные проекты как Reddit, Twitvid и Blip.tv.
Так как IndexTank открыл исходники Indextank-engine, то скорее всего эти ребята поднимут поисковые сервера сами.

Для большинства клиентов альтернативами на данный момент являются:

Совместимы с IndexTank API:
* IndexDen www.indexden.com
* Searchify www.searchify.com
Читать дальше →

Презентация: «Sphinx — полнотекстовый поиск на сайте, просто и доступно»

Время на прочтение4 мин
Количество просмотров20K
Вкратце: хочу сделать презентацию и пару раз выступить на конференциях интернет магазинов. Написал текст презентации, нужны отзывы. Надеюсь на вашу помощь в составлении грамотного и доступного текста.

Текущий текст презентации под катом
Читать дальше →

Sphinx: увеличиваем максимальный размер MVA

Время на прочтение2 мин
Количество просмотров2.7K
Добрый день всем.

Недавно столкнулся с интересной проблемой, связанной с апдейтом MVA (multi value attributes).

Начальные условия:
  • sphinx-1.10-beta
  • sphinx php api

В рамках поставленной задачи мне нужно было реализовать on-a-fly апдейты mva аттрибутов. С начала всё показалось достаточно просто – берём функцию UpdateAttributes() из php-шной API и пишем нужные апдейты. Написал нужную обёртку, стал тестить – все отлично работает. Даже как то не поверилось что так быстро получилось – значит где то есть подвох. Начал тестить, так сказать, с фанатизмом – и подвох всплыл практически сразу.
Читать дальше →

Про борьбу с качеством

Время на прочтение5 мин
Количество просмотров13K
Ровно через три дня будем раскрывать всем желающим кучу секретов: про настройку, оптимизацию, качество поиска и масштабирование Сфинкса (это все еще такой движок полнотекстового поиска и не только) в разные стороны. Подробности в самом конце поста.

А вот один из секретов про качество поиска начну раскрывать прямо здесь и сейчас. Это новая штука под названием expression ranker, добавленная в версии 2.0.2-beta, (правильный русский перевод еще не придумали), и чуть подробнее я сейчас расскажу про него под катом. Вкратце, оно позволяет задавать свою формулу ранжирования прямо на лету, и даже отдельную для каждого запроса. В общем, эдакий конструктор, который дает возможность каждому попробовать построить свой личный MatrixNet, с четырехмерными шахматами и оперными певицами.
Читать дальше →

Вышел 2.0.2, скоро слет пользователей и 2.0.3

Время на прочтение5 мин
Количество просмотров2.2K
Мы тут дотестировали, собрали бинарные пакеты и выложили версию Sphinx 2.0.2-beta (это такой опен-сорсный поисковой сервер, использующийся на куче вебсайтов), запланировали на середину декабря (революционное изменение!) к выпуску Sphinx 2.0.3-release, а также усердно готовимся к (бесплатному) слету пользователей Сфинкса 04 декабря в Санкт-Петербурге. Зарегистрироваться на слет нужно по ссылке чуть выше, подать крутой доклад через нашу контактную форму, а ряд подробностей про те ~30 новых фичей и планы/сроки по ближайшим релизам и их циклу можно прочитать под катом.
Читать дальше →