Php Sphinx随机组合子查询失败

Php Sphinx随机组合子查询失败,php,sphinx,Php,Sphinx,我有一个sphinx搜索引擎,我通过Zend使用sphinxapi.php使用它。它工作得很好。真的很好 然而,有一个问题:它随机失败 // Prepare Sphinx search $sphinxClient = new SphinxClient(); $sphinxClient->SetServer($ip, $port); $sphinxClient->SetConnectTimeout( 10 ); $sphinxClient-&g

我有一个sphinx搜索引擎,我通过Zend使用sphinxapi.php使用它。它工作得很好。真的很好

然而,有一个问题:它随机失败

    // Prepare Sphinx search
    $sphinxClient = new SphinxClient();
    $sphinxClient->SetServer($ip, $port);
    $sphinxClient->SetConnectTimeout( 10 );

    $sphinxClient->SetMatchMode( SPH_MATCH_ANY  );
    $sphinxClient->SetLimits( $resultsPerPage * ($nPage - 1), $resultsPerPage );
    $sphinxClient->SetArrayResult( true );

    $query = array();
    $query['lang'] = '@lang "lang' . $language . '"';

    if (isset($params)) {
        foreach ($params as $param) {
            $query['tags'] = '@tags "' . $param . '"';
        }
    }

    // Make the Sphinx search
    $sphinxClient->SetMatchMode(SPH_MATCH_EXTENDED);
    $sphinxResult = $sphinxClient->Query(implode(' ', $query), '*');
如图所示,我搜索一种语言和任意数量的标记,最终内爆为一个查询字符串(而不是子查询)

所以,正常情况下,这就像一个符咒,但有时斯芬克斯会返回,它发现2000条英文条目,比如说,1000条带有标签“图片”(或其他一些纯英文单词)的条目,但符合这两个结果的点击率为零,这是完全错误的。事实上,刷新页面后,一切都恢复正常,实际结果大约为800个

我的问题是,它为什么会这样做,我如何让它停止

有什么想法吗

:编辑:添加了缩短的输出日志

    [error] => 
    [warning] => 
...
    [total] => 0 
    [total_found] => 0 
    [time] => 0.000 
    [words] => Array ( 
        [langen] => Array ( 
            [docs] => 2700 
            [hits] => 2701 ) 
        [picture] => Array ( 
            [docs] => 829 
            [hits] => 1571 ) ) )

您是否检查了sphinx客户端是否向您提供了任何可能描述故障的错误或警告消息

if($sphinxResult === false) {
    print "Query failed: " . $sphinxClient->GetLastError();
} else {
    if($sphinxClient->GetLastWarning()) {
        print "WARNING: " . $sphinxClient->GetLastWarning();
    }

    // process results
}

这个问题在最初的帖子发布几个月后就被彻底解决了。问题是,伞式公司的服务提供商错误地为sphinx命令分配了错误的根值。上面的问题实际上是在Sphinx0.9.8上运行的,显然是有问题的。我的建议是,如果您遇到过类似的问题,请对用于索引和查询的版本进行双重检查


这感觉就像是你的数学计算无法进行的一次,因为你在第一行忘记了一个负号。感谢所有在这方面和相关线程中提供帮助的人。

刚刚添加了一个典型的失败查询中的错误退出。正如你所看到的,它没有给我一个错误,事实上,它非常成功地找到了所有英文和图片的点击率,但由于各种原因,未能将它们结合起来。你运行的是什么版本?如果它是最新的(0.9.9-rc2),您可以尝试使用SPH_MATCH_EXTENDED2匹配模式,看看它是否更可靠。。。虽然我怀疑这是真的问题。您好,尝试了扩展2,但没有任何效果。还是随机发生的,所以我不知道该怎么办。