У меня установлен sphinx для моей поисковой системы, и он отлично работает, но сейчас я пытаюсь добавить несколько дополнительных функций к поиску, используя setFilter (), который должен позволять мне выполнять предложения WHERE / AND, но всякий раз, когда япопробуйте поиск, он не даст результатов, когда должен.
Это мой рабочий код:
require_once ( "sphinxapi.php" );
$cl = new SphinxClient ();
$cl->SetConnectTimeout ( 5 );
$cl->SetMatchMode ( SPH_MATCH_BOOLEAN );
$cl->SetSortMode ( SPH_SORT_EXPR , "@weight" );
$cl->SetFieldWeights ( array ( "item_title"=>100, "item_tags"=>99 ) );
$cl->SetLimits(0, 1000, 1000, 1000);
$cl->SetRankingMode ( SPH_RANK_PROXIMITY_BM25 );
$cl->AddQuery( $term, "indexTubelogr" );
Теперь я хочу начать поиск с QUERY - AND item_site_id = 1
.Я добавляю:
$cl->SetFilter('item_site_id', 1);
Затем я получаю следующую ошибку:
Warning: assert() [function.assert]: Assertion failed in /home/domain.com/sphinxapi.php on line 810
Я также пытался:
$cl->SetFilter('item_site_id', array(1));
Это не таквыдает ошибку, но опять нет результатов.
Мой sphinx.conf выглядит так:
source srcDomain
{
type = mysql
sql_sock = /tmp/mysql.sock
sql_attr_timestamp = item_date
sql_ranged_throttle = 0
sql_query_info = SELECT * FROM items WHERE item_id=$id
sql_query = \
SELECT item_id, item_date, item_runtime, item_title, item_tags, item_site_id FROM items
}
index indexDomain
{
source = srcDomain
path = /opt/sphinx/var/data/domain
docinfo = extern
mlock = 0
morphology = stem_en
min_word_len = 2
charset_type = sbcs
ignore_chars = U+00AD
phrase_boundary = ., ?, !, U+2026 # horizontal ellipsis
html_strip = 0
preopen = 1
}
Может кто-нибудь сказать, что я делаю неправильно?
Я удалил конфиденциальные данные из кода.