Как вы возвращаете определенное поле из результатов Sphinx? - PullRequest
2 голосов
/ 12 мая 2009

Предположим, я индексирую таблицу книг. У них есть название, автор, описание и т. Д.

Я хочу выполнить поиск по всем полям и вернуть название книг, в которых содержится мой поисковый запрос. Я могу выполнить поиск и вернуть book_id (doc_id) из Sphinx, чтобы я мог найти их самостоятельно, но что было бы действительно здорово, если бы Sphinx просто дал мне названия, чтобы мне вообще не приходилось обращаться к базе данных. Я могу заставить Сфинкса вернуть мне другие атрибуты, но получение текстового поля ускользает от меня.

Возможно ли это? Если да, то как ты это делаешь?

[Обновление] Найдено сегодня: http://www.sphinxsearch.com/faq.html#row-storage

Ответы [ 4 ]

3 голосов
/ 16 августа 2012

Там есть какая-то хитрость. Когда я отвечу до , вы можете добавить эти столбцы, которые хотите получить, в записи attr , а затем просто выбрать значение из результата из sphinx.

Может ли это быть полезным для вас: D

1 голос
/ 18 января 2013

Если у вас небольшой объем данных в текстовых полях, вы можете использовать строковые атрибуты Sphinx.

sql_attr_string

Но у него есть ограничение:

Строковые атрибуты могут хранить произвольные строки, прикрепленные к каждому документ. Существует фиксированный предел размера 4 МБ на значение. Кроме того, поиск в настоящее время будет кэшировать все значения в ОЗУ, что является дополнительным неявный лимит.

Так что было бы не очень хорошо хранить в них много данных, потому что все атрибуты хранятся в ОЗУ.

0 голосов
/ 24 ноября 2010

На этом фронте достигнут определенный прогресс. Теперь, если вы используете SphinxSE , вы можете присоединиться к таблице SphinxSE, по которой вы ведете поиск, к таблице, по которой был создан индекс, и получить свой заголовок таким образом.

0 голосов
/ 13 мая 2009

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

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

...