我已经为我的搜索引擎安装了狮身人面像,它工作得很好,但现在我试图添加一些额外的功能,使用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
}
谁能告诉我什么,我做错了什么?
我从代码中删除敏感数据。
说实话,我不知道如何通过命令行运行sphinx命令。 – 2010-09-05 09:04:23
@Godius:只需复制并粘贴命令(将'myterm'更改为您的实际搜索查询):) – Quassnoi 2010-09-05 09:18:26
好吧,我得到了命令行的东西working.using配置文件'/opt/sphinx/etc/sphinx.conf'.. .. 。 index'indexTubelogr':搜索错误:没有这样的过滤器属性'item_site_id'。 – 2010-09-05 10:10:42