Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Sphinx setFilter()终止所有结果_Php_Mysql_Sphinx - Fatal编程技术网

Php Sphinx setFilter()终止所有结果

Php Sphinx setFilter()终止所有结果,php,mysql,sphinx,Php,Mysql,Sphinx,我已经为我的搜索引擎安装了sphinx,它运行得很好,但现在我正尝试使用setFilter()为搜索添加一些额外的功能,这应该允许我执行WHERE/and子句,但是每当我尝试搜索时,它都不会在应该返回结果的时候返回结果 这是我的工作代码: require_once ( "sphinxapi.php" ); $cl = new SphinxClient (); $cl->SetConnectTimeout ( 5 ); $cl->SetMatchMode ( SPH_MATCH

我已经为我的搜索引擎安装了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-
和item\u site\u id=1开始搜索。我补充说:

$cl->SetFilter('item\u site\u 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
}
谁能告诉我我做错了什么


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

请尝试从命令行运行以下命令:

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

并比较输出?

请尝试从命令行运行以下命令:

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

然后比较输出?

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

然后使用$cl->SetFilter('item_site_id',数组(1));我得出了结果


谢谢你提供的所有信息

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

然后使用$cl->SetFilter('item_site_id',数组(1));我得出了结果


谢谢你提供的所有信息

老实说,我不知道如何通过命令行运行sphinx命令。@Godius:只需复制并粘贴命令(将
myterm
更改为实际的搜索查询):)好的,命令行工作正常。使用配置文件“/opt/sphinx/etc/sphinx.conf”。。。索引“IndexTextBelogr”:搜索错误:没有这样的筛选属性“item\u site\u id”。那么如何添加筛选属性“item\u site\u id”?老实说,我不知道如何通过命令行运行sphinx命令。@Godius:只需复制并粘贴命令(将
myterm
更改为实际的搜索查询):)好的,我的命令行工作正常。使用配置文件“/opt/sphinx/etc/sphinx.conf”。。。索引“IndexTextBelogr”:搜索错误:没有这样的筛选器属性“item\u site\u id”。那么如何添加筛选器属性“item\u site\u id”?