Php Sphinx随机组合子查询失败
我有一个sphinx搜索引擎,我通过Zend使用sphinxapi.php使用它。它工作得很好。真的很好 然而,有一个问题:它随机失败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
// 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,但没有任何效果。还是随机发生的,所以我不知道该怎么办。