поиск sphinx SQL: исключая элементы

Пусть мой поиск сфинкса будет выглядеть так:

$result = $cl->query($_REQUEST['term'], 'myindex');

Но я хотел бы иметь возможность отфильтровывать определенные результаты, которые не соответствуют строковому значению, например:

$result = $cl->query($_REQUEST['term'] . " and somestringcol <> ''", 'myindex');

Есть ли какой-то правильный способ сделать это с помощью PHP API sphinx?


person Wells    schedule 10.12.2010    source источник


Ответы (2)


Вы можете использовать SetFilter(), чтобы указать фильтр для определенного атрибута.

См.: http://www.sphinxsearch.com/docs/manual-1.10.html#attributes

person Langdon    schedule 10.12.2010

Как и Лэнгдон, вы можете использовать SetFilter(), но вы также можете использовать оператор поиска по полю, который доступен в расширенном синтаксисе поиска, чтобы получить немного более конкретный поиск в вашем индексе, а не в атрибутах, связанных с ним.

$result = $cl->query($_REQUEST['term'] . " @somestringcol -term", 'myindex');

В документации по sphix есть много хороших примеров: http://sphinxsearch.com/docs/1.10/extended-syntax.html

person thetaiko    schedule 10.12.2010