我有这个使用sphinxapi.php的Zend使用的狮身人面像搜索引擎。它工作太棒了。真的很棒。狮身人面像随机无法组合子查询
但是,有一个问题:它随机失败。
// 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), '*');
如这里看到的,我搜索了语言和标签的任意量,崩盘到结束的单一查询字符串(而不是使子查询的battleload)。
所以,通常情况下,它的工作原理就像是一种魅力,但偶尔出现的狮身人面像会返回它找到2000个英文条目,比如1000个带有“图片”标签(或其他纯英文单词)的条目,但ZERO会匹配两个结果,这纯粹是错误的。事实上,刷新页面的所有内容都会返回到正常状态,例如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)))
刚刚添加了来自典型失败查询的错误丢失。正如你所看到的,它不会给我一个错误,而且实际上在找到英文和图片中的所有点击时非常成功,但无论出于何种原因未能将它们合并。 – John 2009-11-25 16:52:32
你正在运行什么版本?如果它是最新版本(0.9.9-rc2),则可以尝试使用SPH_MATCH_EXTENDED2匹配模式来查看它是否更加可靠......但我怀疑这确实是问题所在。 – 2009-11-25 18:11:28
你好,尝试了扩展2,但无济于事。仍然是随机发生的,所以我不知道该怎么做。 – John 2009-11-25 22:41:17