2014-12-08 2 views
0

Есть ли способ выполнить поиск по определенному условию?Sphinx поиск - исключить из условия поиска по Условие

Я видел, есть 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

Да, я получил его сейчас, имеет смысл :). Благодаря! – Ned