2010-09-05 51 views
1

我已经为我的搜索引擎安装了狮身人面像,它工作得很好,但现在我试图添加一些额外的功能,使用setFilter()应该让我做WHERE/AND子句,但是每当我尝试搜索时,它都不会返回结果。狮身人面像setFilter()杀死所有结果

这是我的工作代码:

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 
} 

谁能告诉我什么,我做错了什么?

我从代码中删除敏感数据。

回答

0

好的我最终发现了问题。我忘了在sphinx.conf文件中为item_site_id设置属性。

然后用$ cl-> SetFilter('item_site_id',array(1));我拉了结果。

感谢您的所有信息!

1

能否请您尝试在命令行中运行以下命令:

search -i indexTubelogr myterm 
search -i indexTubelogr -f item_site_1 1 myterm 

和比较的输出?

+0

说实话,我不知道如何通过命令行运行sphinx命令。 – 2010-09-05 09:04:23

+0

@Godius:只需复制并粘贴命令(将'myterm'更改为您的实际搜索查询):) – Quassnoi 2010-09-05 09:18:26

+0

好吧,我得到了命令行的东西working.using配置文件'/opt/sphinx/etc/sphinx.conf'.. .. 。 index'indexTubelogr':搜索错误:没有这样的过滤器属性'item_site_id'。 – 2010-09-05 10:10:42