Есть ли способ выполнить поиск по какому-либо условию?
Я видел, что есть SetFilter
вариант, но, похоже, это не то, что мне нужно.
Я хотел бы исключить все результаты, в которых есть пустой столбец (например, company_title). Но я не вижу, что я могу определить это так, используя SetFilter
(или я что-то упускаю)?
Вот как это выглядит:
$results = SphinxSearch::search($search, 'profiles')
->setSelect('id')
->setMatchMode(\Sphinx\SphinxClient::SPH_MATCH_ALL)
->limit(65, $skip);
Ну, вы не можете напрямую, потому что индекс сфинкса не знает, какие столбцы пусты (он индексирует текстовое содержимое, а не отсутствие содержимого 🙂
Таким образом, вам нужно создать атрибут для хранения этого факта
sql_query = SELECT id, company_title, IF(company_title='',1,0) AS empty_title, ...
sql_attr_bool = empty_title
Тогда вы можете использовать его с setFilter
->setFilter('empty_title',array(0));
Других решений пока нет …