Есть ли способ, чтобы сделать эту линию в сфинкса поискаГде статья имеет ИЛИ В Сфинкса
where field_a = 'Value' or field_b = 'Value'
я пытался до сих пор
$sphinx->where(field_A | field_B, '=', 'Value')
Но это не работает. Может ли кто-нибудь помочь мне преодолеть это?
Привет, Бэрри. Я думаю, что написать queyr, как и выше, приведет к полному просмотру атрибутов. Это может быть падение производительности, даже если все они хранятся в памяти. Я не уверен, что просто напишу «SELECT id FROM index WHERE attribute_a = 1;», может ли sphinx быстро индексировать поиск, чтобы найти все записи с атрибутом «attribute_a = 1» (может быть, через красно-черное дерево или хеш-карту)? Или все еще нужно полное сканирование памяти даже с помощью этого простого запроса? Спасибо :-) – ASBai
Обратите внимание, что в sphinx запросы, основанные на атрибутах, являются «полными сканированиями» ALWAYS. ** Фильтры атрибутов будут выполняться против каждой строки **. Нет индексов атрибутов. (с полнотекстовым запросом, с другой стороны, используется специальный индекс, который относится ко всей точке сфинкса, его волшебный инвертированный индекс для быстрого выполнения текстовых запросов. Если речь идет о производительности фильтров, реализуйте через поля. ** быть быстрее, чем атрибуты) – barryhunter
Спасибо за ваши хорошие советы barry :-), поэтому ** фильтрация или сортировка по атрибутам в сфинксе всегда будет выполняться с помощью «полного сканирования» **. Единственное, что мы можем оптимизировать для производительности запроса, - создать соответствующее текстовое поле, чтобы сфинкс использовал свой полный инвертированный индекс, например: 'MATCH ('@ attr_a 1 | 2 | 3')'? Или Можем ли мы создать плагин UDF, поддерживать в нем быстрый индекс и позволить sphinx использовать этот плагин для выполнения запросов и сортировки атрибутов? Как и то, что мы сделали для решения этой проблемы: http://sphinxsearch.com/forum/view.html?id=14391 – ASBai