Sphinx: результат поиска по слову?

Собственно, начал разбираться со Сфинксом. Поставил, сконфигурировал, построил индекс. Произвёл поиск («найти->слово»).

И вот что мне не совсем понятно- может ли Sphinx в результатах поиска отдавать все поля?

Скажем я устанавливаю
sql_query = SELECT id,name,surname FROM test;


И ищу по части слова «Вас». Как мне получить кроме id ещё name и surname? Логика подсказывает, что если я могу найти всех «Вас»<ь>, то индекс хранит и name и surname, так зачем мне лишний раз спрашивать БД о их именах по ид, если я могу получить их у sphinx. Непонятно.


PS: Допускаю, что всё очень просто, но беглый поиск по документации не наталкнул меня на светлые мысли.
  • Вопрос задан
  • 5367 просмотров
Решения вопроса 1
По-умолчанию в сфинксе fulltext-поля хранить и получать не возможно (потому что они просто нигде не хранятся в виде полного значения, так устроены индексы сфинкса)

В 1.10-beta появилась возможность хранить строковые аттрибуты (и получать их в результатах выборки).

Если вы хотите использовать строковый аттрибут для fulltext поиска то его необходимо описать как sql_field_string
Максимальный размер значения для него — 4 мегабайта

Надо помнить, что все аттрибуты сфинкс держит всегда в оперативной памяти, поэтому если вы насоздаете много строковых аттрибутов у вас могут возникнуть проблемы с оперативкой
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Nc_Soft
Видимо, Вы изначально не поняли как он работает. Возвращаются id документов (primary key) в порядке, который был задан при поиске (сортировка, релевантость итп), потом по этим id вытаскиваются остальные данные, а чтобы не нарушить порядок надо применить в запросе ORDER BY FIELD
Ответ написан
Только из консоли, иначе отдает только id-поля. Зная id проблем с нахождением доп. полей обычно не возникает
Ответ написан
@sergey_novikov
В 1.10-beta, похоже, появилась возможность хранить строки (раньше были только числа и т.п.):
sphinxsearch.com/docs/manual-1.10.html#conf-sql-attr-string
sphinxsearch.com/docs/manual-1.10.html#conf-sql-field-string
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы