Sphinx 2.0.2 Фильтрация атрибутов sql_attr_string - PullRequest
0 голосов
/ 04 января 2012

Во-первых, позвольте мне сказать, что я знаю, что http://sphinxsearch.com/docs/current.html#conf-sql-attr-string говорит, что «строки могут использоваться только для хранения и извлечения» и что «Они не могут участвовать в выражениях, использоваться для фильтрации, сортировки или группировки»...

Сказав, что, используя Sphinx 2.0.2, получая доступ к индексу через интерфейс SQL (на порту 9306), а также через SphinxSE, я могу сортировать, по крайней мере, по строковому атрибуту.У меня есть.

Так что, хотя это не обязательно означает, что документация полностью неверна, у меня остается небольшая надежда, что я тоже смогу фильтровать по этому строковому атрибуту.* К сожалению, я не знаю, могу ли я, и если я могу, я не знаю, как.

Может кто-нибудь здесь, пожалуйста, избавить меня от моих страданий?

[EDIT]

Атрибут 'mail_street_name', и я попытался отфильтровать его несколькими способами.Пытаясь отфильтровать 'box', например, в строке запроса SphinxSE, я пробовал filter=mail_street_name,box, filter=mail_street_name,"box" и filter=mail_street_name,\'box\' (экранированный, потому что он находится внутри строки).Эти запросы не приводят к изменению набора результатов (как будто я вообще не пытался фильтровать этот атрибут).

При подключении MySQL к порту 9306 я пробовал WHERE mail_street_name='box', WHERE mail_street_name="box", WHERE mail_street_name=box и использование LIKE вместо =, и все должны получить синтаксическую ошибку (Ошибка 1064 (42000)) от SphinxQL.

Большое спасибо.

1 Ответ

1 голос
/ 04 января 2012

Как я уже говорил в моем последнем комментарии, вы можете попытаться определить поле (http://sphinxsearch.com/docs/current.html#conf-sql-field-string).

Вы могли бы сделать WHERE MATCH((@mail_street_name '*box*'))

И, согласно документации, вы все еще можете сортировать по ней также

...