2013-09-03 5 views
1

Я довольно новичок в поиске sphinx, и у меня есть некоторые проблемы с моим запросом.Sphinx Search - Дополнительные фильтры

У меня есть следующие конфигурации:

sql_attr_uint = user 
sql_attr_uint = category 
sql_field_string = title 
sql_field_string = description 

Запрос выглядит

$sf->setMatchMode(SPH_MATCH_ANY); 
$sf->setFilter("user", array("1033")); 
$sf->setFilter("category", array("9")); 
$sf->setFieldWeights(array("user"=>150,"category"=>50,"title"=>75,"description"=>75)); 

$result = $sf->query('my test query',"test"); 

Я хотел бы запросить все строки, которые соответствуют ни одному из фильтров, и сортировать их по количеству фильтров они соответствуют приоритетному пользователю> title = description> category

Основы, мне нужны фильтры для веса, а не для удаления разворачивающихся строк.

Спасибо

ответ

1

Basicaly, я бы нужен фильтры веса, а не удаление строк удаления информации.

Хотя в основном это возможно, его затаили с трудностями.

лучше всего преобразовать UINT атрибуты полнотекстовых ключевых слов,

изменение sql_attr_uint в sql_field_string так стали полей (если вы хотите, чтобы держать их в качестве атрибутов тоже, если не просто удалить строку, и пусть они по умолчанию поля)

Затем можно фильтровать с помощью расширенного синтаксиса

$cl->setMatchMode(SPH_MATCH_EXTENDED); 
$cl->Query('"my test query"/1 | (@user 1099) | (@category 9)',"test"); 

(это также использует кворумный синтаксис для эмуляции любого запроса)

+0

G Reat! Спасибо! – Dilvish5