Pull to refresh

Comments 17

Спасибо за статью, думаю начинающим разбиратся со сфинксом будет полезно.
Хотелось бы кое что добавить:
1. Морфология
Минусом морфологии сфинкса является стемминг (не все слова изменяются префиксами/суффиксами), а также его наличие всего для нескольких языков (русского, английского), что значительно сужает круг его применения.
Для себя решали задачу все-таки через полноценные словари словоформ (для php хорошо зарекоендовал себя phpMorphy, на питоне, соответвенно pyMorphy).
2. Словоформы
тоже достаточно спорная реализация — при построении индекса все слова из словоформы заменяются на один и тот же CRC32, соответственно после изменения в словоформах необходимо полностью перестроить индекс (у нас он достигает 300Гб).
Для себя решали отдельным справочником словоформ, которые заменяли слово непосредственно в запросе
Спасибо, и то и другое я кажется смогу применить. У вас на редкость ценный комментарий.
индексация словоформ по идее должна решатся включением index_exact_words
Как это решает проблему перестройки индекса? И причем тут словоформы и index_exact_words?
Мне кажется я не до конца понимаю ваш комментарий.
А как вы phpMorphy используете? Храните в отдельной таблице текст пропущенный через него или как-то по другому?
При индексации токенизируем текст и слова приводим к начальной форме (формам, если их несколько). Тоже самое при поиске — токенизируем строку запроса, слова приводим к начальной форме и передаем сфинксу.
При таком подходе решается проблема поиска по словоформам.

Единственный нюанс такого подхода — phpMorphy нужно указать хранить словари в разделяемой памяти, тк при чтении с диска на большой нагрузке упираемся в чтение, а при хранении в памяти скрипта уписаемся в потребление памяти.
Правда phpMorphy хранит может хранить словари только в одном сегменте памяти, так что если их много, то нужно будет дорабатывать его чтобы он умел работать с несколькими сегментами.
Вы поаккуратнее про ТРАВКУ! По новому закону, так и Хабр закрыть могут =)
Основная проблема документации sphinx на мой взгляд малое количество примеров для большинства интересных настроек, сегодня постараюсь рассказать в примерах о них.

Зато это позволяет срубить денег на тех.поддержке и консультациях. :) Такая вот система монетизации.
Лично мне было сложно недавно прикручивать поиск с опечатками по статье Аксёнова к node.js + mongoDB. Прикрутил наполовину, как смог, но всё равно рад.
Так что мне истории успеха с применениех сфинкса безумно интересны.

Проект то для нас халявный и сообщество теоретически должно делится. В том же php в комментах море примеров по многим функциям. Вы вот с горем пополам решили проблему, а с остальными поделились решением?
Ссылки приложены, вы о чем?
Нет, у вас статья хорошая я ответил на комментарий выше.
Так он тоже дал ссылку на статью как сделать.
>sphinxql — аналог протокола sql
sql — это язык, а не протокол
Возможно там стоило написать аналог протокола mysql, не очень много работал в этом режиме.
Можно написать еще про Real Time index, сейчас столкнулся, забавная штука для мгновенной индексации изменений.
Большинство статей про реалтайм индексы в рунете наполнены откровенным непониманием как их использовать, прочитал 10 штук и мне показалось, что реалтайм индексы самая ненужная вещь в сфинксе. Эти статьи писали люди, которые не применяют эти индексы и дают примеры, которые просто оторваны от жизни и вводят читателей в заблуждение.
Если хватит сил напишу статьи про дельта и реалтайм индексы и как их правильно готовить.

Sign up to leave a comment.

Articles