Поиск сфинкса — исключить из результатов по условию

Есть ли способ выполнить поиск по какому-либо условию?

Я видел, что есть SetFilter вариант, но, похоже, это не то, что мне нужно.

Я хотел бы исключить все результаты, в которых есть пустой столбец (например, company_title). Но я не вижу, что я могу определить это так, используя SetFilter (или я что-то упускаю)?

Вот как это выглядит:

$results = SphinxSearch::search($search, 'profiles')
->setSelect('id')
->setMatchMode(\Sphinx\SphinxClient::SPH_MATCH_ALL)
->limit(65, $skip);

0

Решение

Ну, вы не можете напрямую, потому что индекс сфинкса не знает, какие столбцы пусты (он индексирует текстовое содержимое, а не отсутствие содержимого 🙂

Таким образом, вам нужно создать атрибут для хранения этого факта

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));
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]