我有这个 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 ) ) )