на postgresql, в таблице 50 миллионов записей, есть текстовое (varchar) поле, по которому нужно сделать поиск. В обоих базах построил нужные индексы для фуллтекста, ищет примерно за одинаковое время, бывает несколько минут уходит на запрос. А нужно, что бы секунды.
Решил потестить Sphinx, создал индекс, все нормально, запустил, но как использовать?
1) по докам первый способ, с помощью утилиты типа, какой? search устарела, пишут
2) с помощью API на языках, делал кто так?
3) нативно с консоли базы, в mysql тут все хорошо, а для postgresql есть pg_sphinx, я его установил, добавил расширение в базу, функции добавились, все норм, но при попытке сделать запрос, выдает ошибку
zz7=# select count(*) from sphinx_select('zz7_idx', 'квіти', NULL, '@relevance DESC',0,5,NULL);
ERROR: Can't connect to sphinx server. Lost connection to MySQL server at 'reading initial communication packet', system error: 0
настраивал кто успешно, можете пример конфига кинуть или подсказать в чем проблема?
Кстати, а вы пробовали rum индекс для полнотекстового поиска? В отличие от gin ему не нужно делать recheck и залазить в таблицу для этого.
upd: разобрался, как юзать python API, хотя там и есть предупреждение об устарелости, но просто поиск работает, причем ОФИГИТЕЛЬНО БЫСТРО (извините, за капс, но после неск дней разбирательста с фуллтекстом это меня просто поразило). SphinxQL только для mysql я так понял, т.е. нельзя из mysql-клиента делать запросы к индексу, построенному для postgresql? осталость только понять, как таки юзать pg_sphinx...
Я со сфинксом не игрался, но так как в отпуске, сейчас дождь, то я открыл его исходники на git. У вас ошибка возникает в функции ensure_sphinx_is_connected. Там открывается соединение к MySQL и если что-то пошло не так, то выводится описание ошибки - "lost connection to mysql at reading initial communication". Вы точно нормально можете подключиться к mysql с сервера postgresql?
Обсуждают сегодня