Как стать автором
Обновить

Комментарии 37

Про RT бы поподробнее.
Мануала нормального пока нет.

Статейку бы вводную с примерами.
> Мануала нормального пока нет.

Дык, одна (одна) из причин задержки альфа-релиза.
> Мануала нормального пока нет.

Дык, одна (одна) из причин задержки альфа-релиза.
А как вы себя позиционируете по отношению к Apache Lucene?
Что конкретно имеется в виду под «позиционированием»?

Для начала, Lucene вообще библиотека, Sphinx готовый к использованию «из коробки» сервер.
Имеется ввиду use-cases, где Sphinx предпочтительнее: расширяемость, функции(spell-checker, crawler, индексирование pdf/excel etc) или производительность.

Ну под Apache Lucene я имел ввиду проект ASF, в который входит такой же «готовый к использованию «из коробки» сервер» Solr.
Ууу, подробный сравнительный анализ это на серию обстоятельных постов как минимум, на полтомика как максимум.

Очень (очень) вкратце, индексация и поиск у нас быстрее до нескольких раз. Плюс умеем делать ряд интересных штук, которые Lucene/Solr делать не умеют (и наоборот, наверняка, тоже).

Ну вот потихоньку работаем над тем, чтобы «наоборот» не оставалось, набор случаев, где категорически надо именно Lucene, сокращался, перформанс рос, итп ;)
А вы решили ту проблему с сортировкой по random? а то у меня каждые раз выбираются одни и те же поля =)
Точно помню, что патчил; не помню только, в какой версии.
И о модуле для Drupal вы не слышали? Правда, по данным сайта он давно не обновляется… Есть там же и более другая разработка.
Какой из них наиболее правильно использовать (Sphinx search vs. Sphinx search integration), не совсем понятно.
Я ж не пользуюсь ничем. На что пришлют ссылку, о том слышу. Не пришлют, так нет!
Ни тот ни другой не очень-то функциональны. Плагин Sphinx под шестой версией не работает (хотя лежит стабильный релиз), плагин Sphinx search работает, но его надо допиливать. В принципе, dev-версия плагина Sphinx search спокойно работает в продакшене.
Аналогично использую девелоперскую версию drupal.org/project/sphinxsearch в которой убрал их собственный интерфейс индексации и написал ручные запросы sql. >30к материалов индексируется за 4 секунды против 6 минут встроенного скрипта.
А не поделитесь sql-запросами? Если не жалко, конечно. ))
ничего военного =)
в базу добавлена таблица
CREATE TABLE IF NOT EXISTS `sph_counter` (
  `counter_id` int(11) NOT NULL,
  `max_doc_id` int(11) NOT NULL,
  PRIMARY KEY (`counter_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


а так выглядит секция sphinx.conf
source main {
    type = mysql
    sql_host = 127.0.0.1
    sql_port = 3306
    sql_db = *DB*
    sql_user = *LOGIN*
    sql_pass = *PASS*
    sql_query_pre = SET NAMES utf8
    sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(nid) FROM node
    sql_query_range = SELECT 1,( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
    sql_range_step = 1000
    sql_query = select r.nid as id, r.nid as nid, r.title as subject, concat(r.teaser, r.body) \
       as content, n.created, n.changed as last_updated, NOT(n.status) as is_deleted, n.type as nodetype, \
       n.uid as uid \
       from node_revisions r, node n where n.vid=r.vid and n.status > 0 \
       and n.type IN ('news', 'poll', 'blog', 'story') and r.nid between $start and $end \
       and r.nid <=( SELECT max_doc_id FROM sph_counter WHERE counter_id = 1 )
    sql_attr_uint = nid
    sql_attr_uint = uid
    sql_attr_timestamp = created
    sql_attr_timestamp = last_updated
    sql_attr_bool = is_deleted
}

source delta : main {
    type = mysql
    sql_query_pre = SET NAMES utf8
    sql_query_range = SELECT ( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 ), MAX(nid) FROM node
    sql_range_step = 1000
    sql_query = select r.nid as id, r.nid as nid, r.title as subject, concat(r.teaser, r.body) \
       as content, n.created, n.changed as last_updated, NOT(n.status) as is_deleted, n.type as nodetype, \
       n.uid as uid \
       from node_revisions r, node n where n.vid=r.vid and n.status > 0 \
       and n.type IN ('news', 'poll', 'blog', 'story') and r.nid between $start and $end 
}


Чего тут нет:
— индексации комментариев (она была не нужна)
— разбивки индекса на части (в данный момент main легко обновляется за 4 секунды глубокой ночью), а delta раз в 5 минут обновляется за несколько десятых секунды.
Плагин для ZF какой-то высосанный из пальца: педжинатор, скрипт управления и конфиг, который умеет подставлять параметры соединения с БД. Плагинище! :)

Ждем человека, который осилит написать генератор конфига по Doctrinе-схеме.
Имхо, где-нибудь в скобках уточнить в двух словах что за сфинкс такой, было бы не лишним. Даже гугл сходу выдает, как минимум, два проекта.
Их больше двух, но наш в Гугле пока первый.

В скобку #whois добавил правильную ссылку, впрочем.
По RT вопросы, на основе
sphinxsearch.com/downloads/sphinx-mysqluc2010.pdf

Правильно ли я понял из фразы
«Indexing-wise, just INSERT rows (literally)»

Не индексер натравливаем на сохраненные в чем то данные, а данные толкаем по сути в индекс?

Угу, на то оно и RT. Батч-индексацию тем же indexer когда-нибудь тоже приделаем (это несколько муторно, но принципиальных проблем нет).
Тогда возникает такой вопрос.

По сути, сфинксу становится по фигу в каком типе сторейджа хранятся данные.
Естественно с ограничением «пока индекс не навернулся :-(»
Это так?

Дальше.
В принципе, есть ли препятствия для создания индекса в режиме RT, булками по
«1000+ rows/batch» где нибудь сбоку и последующей замены текущего индекса вновь созданным путем перетирания файлов, либо еще как нибудь?

Ну и последнее. Если есть команда «INSERT», «DELETE» будет?

Про сторадж не понял, MySQL storage engine и раньше глубоко пофигу был, без разница, откуда данные тащить.

Про замену индекса не понял совсем.

INSERT, REPLACE, DELETE, SELECT уже есть. Будет UPDATE, ограниченный.
Сторейдж в смысле «откуда данные тащить», речь про экзотику, типа разные там кассандры и т.п.

>Про замену индекса не понял совсем.
упс
:-(
пошел читать мануал
Не
ну это прокладка нужна которая кормить сфинкса xml'ем будет

А тут, тупо, из приложениия два плюха — один в сторейдж, один в сфинкс. Без заморочек.
А Oracle, случаем, не хочет положить движок SphinxSE в коробочку с mysql?
Предлагаю спросить у Oracle, вдруг ответят!
было бы неплохо.
Подскажите, есть ли возможность интегрировать модуль морфологии, чтобы использовать его, а не стеммер?
Если нет, то планируется ли и когда, если есть, то где об этом почитать?
Кроме стеммеров еще словари словоформ (wordforms) можно пользовать.

Пробовать подключать сторонние библиотеки (libaot) технически вполне возможно. Однако в обозримом будущем не планируем. Все зависит от клиентов в данном случае.
У Sphinx, к большому моему сожалению, есть проблема с саппортом. Баг репорт от 31 марта до сих пор не получил никакого внимания: www.sphinxsearch.com/bugs/view.php?id=503

Это единственная причина почему я собираюсь мигрировать на Lucene
> Баг репорт от 31 марта до сих пор не получил никакого внимания:

Если вы наш клиент — у вас есть специальный адрес, куда надо слать всю информацию о любых проблемах.

Если таки нет — ваши баг-репорты ничуть не менее нужны и важны (нередко даже более!), и рано или поздно ими обязательно займутся тоже.

Однако следует понимать — что в первую очередь ведутся работы по запросам клиентов, во вторую по запросам большинства (!) пользователей, и только в третью по конкретным баг-репортам, затрагивающим отдельных пользователей.

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

Я понимаю то, что Вы пишете про клиентов и бесплатный саппорт и все такое. Однако, справедливости ради, я готов понять такой подход в части дополнительной функциональности (наращивания фич), но не могу его понять в части баг-фиксов. Баг ведь есть? Есть. Вы готовы ждать, когда на эту граблю наступит платный клиент? Ок, Вам решать. Я со своей стороны считаю долгом отправить Вам баг-репорт с максимумом информации, это моя небольшая реальная благодарность за проект.

Ну а раз я не согласен с Вашей политикой саппорта, я смигрирую на Lucene. Это мое решение.
> Нет-нет, это был ни в коей мере не наезд.

Это было как минимум нехилое передергивание, как по мне.

> но не могу его понять в части баг-фиксов. Баг ведь есть? Есть.

Технически, у нас (у нас) есть только багрепорт.

Не факт, что баг возможно воспроизвести по данным багрепорта.

Не факт, что вообще есть баг.

> Вы готовы ждать, когда на эту граблю наступит платный клиент?

А это снова передергивание.

Повторяю: по всем (всем) баг-репортам рано или поздно ведется отработка.

Нужна реакция, но неважно, когда? Ок, ждите, пока руки дойдут (повторяю: они всегда доходят).

Нужна быстрая реакция с предсказуемыми ETA? Обращайтесь за коммерческой поддержкой.

Нужна быстрая реакция забесплатно? Извините, такой услуги в данный момент мы не предоставляем.
>> Нет-нет, это был ни в коей мере не наезд.

> Это было как минимум нехилое передергивание, как по мне.

??! Баг репорт есть, реакции по нему нет. Пруфлинк мной дан.

>> но не могу его понять в части баг-фиксов. Баг ведь есть? Есть.

> Технически, у нас (у нас) есть только багрепорт.

> Не факт, что баг возможно воспроизвести по данным багрепорта.

> Не факт, что вообще есть баг.

Если я Вас правильно понял, никто и не пытался воспроизвести баг.

> > Вы готовы ждать, когда на эту граблю наступит платный клиент?

> А это снова передергивание.

Возможно я не понимаю значения Вашего термина «передергивать».

Вы же сами уже написали, что Вы будете ждать баг-репорта от платного клиента, пусть даже допустим он будет описывать то же самое (hint!)

Я со своей стороны могу еще раз повторить, что Вашу позицию понял, возражений не имею, хозяин, как говорится, барин. Но вот баг-репорты очевидно посылать больше не буду… пусть платные клиенты баги ищут.
> Вы же сами уже написали, что Вы будете ждать баг-репорта от платного клиента,

Я плохо понимаю — где и главное КАК такое можно было вычитать?!

Два раза написал черным по белому что по ВСЕМ репортам ведется отработка — нет, придумываем какую-то чушь, подменяем ею мои слова, и решительно осуждаем.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий