Comments 32
Очень интересно, но для отличного програмиста все это напсать не проблема, а вот для новичка это утопия, из которой он поймет какой он недоучка. имхо, конечно
Если Вам лично что то не понятно или есть какие-то вопросы, которые Вы по каким-то причинам не хотите задавать в комментариях — можете написать мне личное сообщение.
реализация в коде осталась за рамками данной статьи. что же касается хранения данных, то посмотрите таблицу tags — по структуре там видно как хранятся деревья, хранение синонимов в таблице tags_names.

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

надеюсь я правильно понял ваш вопрос.
Очень грамотная статья. Даже не знал о таких багатых возможностях Sphinx.
сори, смутила фраза «… богатых возможностях...»
Это всего лишь базовый функционал. А как его грамотно использовать — тут уж от мастера зависит.
Ну, я думал что сфинкс годится только для поиска — простого (по постам, к примеру) или сложного — какой-нибудь расширенный поиск со множеством параметров. А о таких вещах не знал
Видимо вы смотрите на эту статью под каким-то неправильным углом…
Потому, что все что в статье описывается — это и есть поиск! Причем еще и полнотекстовый местами.
Просто благодаря сфинксу некоторые вещи эффективнее сделать через него нежели хитрыми запросами к БД!
Вот например market.liveinternet.ru — вообще полностью сделан на сфинксе — контент для каждой страницы этого сайта «генирируется» именно сфинксом.
Да-да, как где-то было написано про сфинкс: сначала унесите на него полнотекстовый поиск, а потом всё остальное :)

У нас на adme.ru — все запросы в БД к статьям выглядят вот так: «WHERE id in(а тут через запятую то, что дал нам сфинкс)» — отлично работает!
Вопрос к знатокам: можно ли сделать не *дерево* тегов, а *граф*? Т.е. чтобы у каждого тега было несколько детей и несколько родителей?

И, если можно, приведите пример SQL-запроса, который бы доставал пост по тегу с учетом графа зависимости и синонимов.

Просто сам сейчас пишу умную теговую систему для своего проекта, и на этом месте у меня «затык».
Таг может являться «контейнером» для других тагов, каждый из которых, так же может быть контейнером. Один таг может быть включен в несколько контейнеров. Таким образом, у тага может быть несколько родителей. Главное реализовать проверку, чтобы избежать рекурсии. Связи между двумя тагами хранятся в отдельной таблице. У каждой связи есть «позиция в контейнере», по номеру позиции собираем дерево, если надо.

Сумбурно, но как-то, если в двух словах. :)
В этой статье я не буду останавливаться на моментах связанных с установкой Sphinx и не буду рассказывать про sphinx-api — будем считать что всё это читателю уже знакомо.

Буквально на днях задумался над установкой Сфинкса себе, но вот проблема: как это все поставить и настроить? Хотелось бы услышать ответ на цитату в виде ссылки, если кому-нибудь не сложно… Буду премного благодарен (за русский язык, ибо искал — не получилось найти ничего, кроме обзоров и тестов)…
1) На офф. сайте в документации есть пункт: www.sphinxsearch.com/doc.html#installation
2) Даже не читая его скачал сырцы ./configure, make, все дела — получили: 1. демона(searchd) 2. индексатор(indexer) 3. возможность работать из командной строки(search) 4. пример файла с настройками сфинкса(sphinx.conf) Для не превередливых пользователей установка на этом заканчивается.

А вот про винду ничего немогу сказать.
мне винду не надо, у меня mac, думаю встанет. Ну или под линуксом перегружусь, потестировать ) Спасибо вам большое, я не специалист в компиляции просто, но попробую обязательно =)
Если не специалист, то так же встанет вопрос наличия требуемых библиотек для компиляции. Но тут можно пойти в лоб и доустанавливать требуемые libs.
=)
Не за что.
Ещё один совет: если у вас полная индексация занимает ощутимое время (например более 3 минут), то пожалуй, уже стоит задуматься над merge'ем индексов вместо полной переиндексации.
У мну переиндексация занимает 40 минут, и даже при этом необязательно опользоваться Merge — засуньте в крон и пускай колбасится себе ночью.
6Gb, но думаю это уже другая песня, если что — пишите почтой =)
Что-ж такое то..!
Почему никто не хочет читать мануал?
Идея за которую вы благодарите описывается в пункте «3.10. Live index updates» (http://www.sphinxsearch.com/doc.html#live-updates).

Как же вы без RTFM внедрять будете?
Грешен, каюсь, еще не все мануалы лично прочитаны. :)
Но почему бы хорошего человека и не поблагодарить за хорошую статью?
Лев правильно говорит — америка тут не открыта — просто решение на блюде.

Но благодарность уже принял, и отдавать обратно не собираюсь. :)
Подскажите, как вы запускаете индексер на создание delta_index при изменении информации?
пытаюсь из PHP exec() — пишет, что нет доступа к PID-файлу
запустите sphinx под тем же пользователем, что и php и доступ к pid-файлу будет
Привет из прошлого.

Ну нада же блин. Всю голову сломал как сделать поиск по тегам по полю MVA, чтобы все переданные теги искались по «условию И».

Оказца все очень просто — надо вызвать setFilter() несколько раз.

Спасибо огромное. Вам +1!
Only those users with full accounts are able to leave comments. Log in, please.