вышел Sphinx 1.10-beta

Третьего дня выложил Sphinx 1.10-beta, с блекджеком и шлюхами RT индексами, строковыми атрибутами, оптимизированным форматом индекса, и традиционным десятком-другим фич поменьше. Вчера выложил к нему RPM вот еще.

Эпопея с 1.x затянулась, потому что ряд причин (последняя была бинлоги), пост на Хабре, потому что RPM. Зато теперь можно сделать вот так:

$ wget sphinxsearch.com/downloads/sphinx-1.10-1.el5.x86_64.rpm
$ rpm -i sphinx-1.10-1.el5.x86_64.rpm
$ service searchd start
$ mysql -h 0 -P 9306
mysql> INSERT INTO testrt VALUES ( 123, 'hello', 'world', 456 );
mysql> SELECT * FROM testrt WHERE MATCH('hello');

Случайный занятный факт: еще у нас теперь есть транзакции, спец-настройка имени В.И.Ленина innodb_flush_trx_log_on_commit, итп. (См. десяток-другой фич поменьше.)

Девиз месяца: почти база данных, только поиск все еще работает!
+56
22 июля 2010, 15:42
19
shodan 221,7

комментарии (50)

0
kurokikaze #
Протокол сильно поменялся (двоичный, я имею в виду)?
+5
shodan #
SphinxAPI почти не менялся — ну и он всегда обратно совместим, если что.
0
kurokikaze #
Я его реализую прямо поверх протокола. Делаю SphinxAPI для нужной платформы как раз. Поэтому бинарный протокол меня и интересует в первую очередь.
+2
shodan #
О. Любопытно, что за платформа?
0
kurokikaze #
Node.js
0
kurokikaze #
Вот сам коннектор.
+2
shodan #
Куча новых слов, но интересно, спасибо!

Надо внести в список 3rd party APIs…
0
kurokikaze #
Я думал Вас об этом попросить когда коннектор будет чуть более отполирован. Но можно и сейчас, тем более что для общения со Sphinx он уже годится.
0
seriyPS #
Пользуясь случаем хочу сказать что работал довольно много со Sphinx и SphinxApi и активно приходилось использовать мультизапросы AddQuery — т.е. делать несколько поисков в одном запросе (для добавления вывода количества совпадений по категориям товаров, по интервалам цен и т.д.).
Так вот, ОЧЕНЬ неудобно то, что весь API реализован в одном классе — такие функции как SetFilter, setGroupBy и прочие действуют «глобально». Т.е. создал я запрос, установил параметры ранкинга, группировки, сортировки, фильтрации по атрибутам, добавил запрос в addQuery и чтобы сделать следующий запрос приходится подчищать все параметры предыдущего запроса — делать кучу reset-ов. а это ну ооочень напрягает. Создавать для каждого запроса новый экземпляр SphinxClient накладно т.к. придется создавать отдельное подключение.

Мое пожелание — делать в API 2 класса — один для формирования запроса и второй для отправки запроса(ов) серверу и получения ответа. т.е. мы создаем несколько независимых экземпляров SphinxQuery, каждому выставляем свои SetFilter setGroupBy и пр. и скармливаем экземпляру SphinxServer, который и отсылает запросы на сервер и возвращает результаты.

Хотя, возможно, я просто не до конца разобрался?
0
shodan #
> чтобы сделать следующий запрос приходится подчищать все параметры предыдущего запроса —

class MySphinxClient extends SphinxClient { function ResetAll() {… } } вроде пишется за 5 минут, если очень нужно!

> Мое пожелание — делать в API 2 класса —

Революций в API уже не будет, SphinxQL FTW.
0
seriyPS #
Кстати! В предложенном kurokikaze JS API github.com/kurokikaze/limestone/blob/master/limestone.js примерно так и сделано. есть класс Sphinx и есть raw_query))) Я не одинок!
0
docomo #
Отличный девиз! :)
Спасибо вам за то, что вы делаете!
+1
bigdogsru #
А на русском языке к нему нет документации?
0
denism7 #
Нет, вроде. Добровольцев видимо не нашлось, а у единственного разработчика и без этого хватает забот :-)
0
shodan #
Ну, разработчиков побольше одного, но документацию переводить все равно возможностей нету.

Можем пробовать вычитывать и корректировать, как максимум.
+2
coolspot #
Ааааа!!! Андрей!!!
Я ваш фанат, дайте автограф!!!1
+8
shodan #
Не вопрос.

(подписывает стандартный договор про консалтинг)

Кого вписывать в реквизиты с вашей стороны, куда отсылать для кросс-подписи, с кем утрясать SOW? :-)
0
denism7 #
А виндовая версия по-прежнему не рекомендуется для продакшена?
+1
shodan #
Ну, многопоточность теперь есть, можно пробовать всякое.
0
denism7 #
Это очень радует. Осталось дождаться пока проапдейтят .NET-клиент.
0
bes_internal #
Всё, пошел пробовать.
+5
r13 #
Vim, BSD, Sphinx! What a week…
+4
shodan #
— Выключите свет! Они на свет лезут!!!
0
TravisBickle #
+ erlyvideo
+2
reket #
+ PHP
0
JetMaster #
сфинкс «научился» выдавать прямое вхождение запроса выше остальных вариантов?
+3
shodan #
0
SamDark #
Ох, как кстати. Спасибо.
0
TravisBickle #
Ура! Свершилось! Я ждал этого дня несколько лет!
0
stansult #
… джва года :)
0
TravisBickle #
Больше =)
+1
Rusted #
0
denism7 #
Оперативно!
0
denism7 #
Андрей, я тут прочитал, что MySQL теперь вроде как и не обязателен. Т.е. если у меня куча xml-файлов, sphinx их может сам проиндескировать без предварительного разбора?

Можно какой-нибудь примерчик на эту тему? На сайте что-то не нашел.
0
shodan #
Необязателен давно. sphinxsearch.com/docs/current.html#xmlpipe2
0
TravisBickle #
Fedora 13.

[root@gf-home-server ~]# rpm -i sphinx-1.10-1.el5.x86_64.rpm
ошибка: Неудовлетворенные зависимости:
libcrypto.so.6()(64bit) нужен для sphinx-1.10-1.el5.x86_64
libexpat.so.0()(64bit) нужен для sphinx-1.10-1.el5.x86_64
libmysqlclient.so.15()(64bit) нужен для sphinx-1.10-1.el5.x86_64
libmysqlclient.so.15(libmysqlclient_15)(64bit) нужен для sphinx-1.10-1.el5.x86_64
libssl.so.6()(64bit) нужен для sphinx-1.10-1.el5.x86_64
0
shodan #
Ага, ок.

Понаставим новых сборочных виртуалок при случае.
0
YaroslavVorozhko #
Уже давно использую real-time индексы.
Работает отлично.
Релиз беты — это как праздник для меня!
+1
YaroslavVorozhko #
Также, строковых атрибутов очень не хватало.
Теперь нет необходимости держать в отдельной базе связь indexID с строковыми ID.
Например:
* строковые ключи mongoDB
* строковые ID документов dokuwiki

Сфинкс поиск стал намного удбней и девиз хороший!
Так держать Андрей!

0
seriyPS #
Кстати, сортировка по строковым атрибутам будет работать? Например для сортировки по заголовкам тем форума, или лучше для этого использовать sql_attr_str2ordinal как раньше?
0
shodan #
Пока не будет — еще не написали.

Ordinal, скажем прямо, не лучшее решение — делали в порядке затычки.
0
Quessir #
Пользуюсь pecl-клиентом для sphinx, но он не вытягивает строковые данные. Клиент еще не обновили, или я неправильно понял цель sql_field_string?
+1
shodan #
Надо ждать обновления PECL, ага; мы подновили libsphinxclient, однако PECL поддерживается не нами.

И, конечно, SphinxQL FTW.
0
jiexaspb #
Когда 1 сайт — настроил индекс и забыл.
А когда их 40 и одинаковая структура — тяжело для каждого настраивать

Может есть какие-нибудь способы, чтобы не нужно было каждый раз создавать конфиг для индекса?
0
YaroslavVorozhko #
Способо есть.
Создаешь скрипт, который по заданной схеме создает конфиг.
0
shodan #
Или начинаешь конфиг со строчки #!/usr/bin/php

Или с любой другой #! строчки

:)
0
JeanLouis #
Где бы еще спросить… Спрошу здесь… Как можно подружить SphinxQL и NET приложения? Протоко mysql41 который используется в SphinxQL не поддерживается MySQL .NET/connector.
0
plandem #
к сожалению, 1.10b так и не заработала с RT под Windows. При попытке добавить что-то в RT демон сразу же падает :(
0
erlyvideo #
Андрюха, я понял чем ты налошил: надо было делать не SphinxQL, а расширяемый XML язык, который бы ходил по SOAP-у в Corba транспорте. Тогда тебе проблема как шарить данные между соседними тредами показалась бы совершенно незначительной =)
0
shodan #
так точно! причем все это на java

очень, очень полезно для энтерпрайзности и исключения неинтересных проблем перформанса («ну поставьте 1000 серверов для поиска по 10 GB данных»)

но не умею Eclipse-ом пользоваться, надо начинать!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.