2009-11-25 13 views
1

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

回答

0

这个问题一直解决了原来的职位后完全几个月。问题在于,我们在伞式公司的服务提供商错误地将错误的根值分配给狮身人面像命令。上面的问题实际上在Sphinx 0.9.8上运行,显然是bug。我的建议是,如果你遇到过类似的问题,则可以使用双击tripple-check这两个版本来同时使用索引和查询。

感觉就像你的数学计算没有推出的时间之一,因为你在第一行忘了减号。感谢所有试图在本文和相关主题中提供帮助的人。

0

你检查,看是否狮身人面像客户端是给你的任何错误或警告,可能描述失败的消息?

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

    // process results 
} 
+0

刚刚添加了来自典型失败查询的错误丢失。正如你所看到的,它不会给我一个错误,而且实际上在找到英文和图片中的所有点击时非常成功,但无论出于何种原因未能将它们合并。 – John 2009-11-25 16:52:32

+0

你正在运行什么版本?如果它是最新版本(0.9.9-rc2),则可以尝试使用SPH_MATCH_EXTENDED2匹配模式来查看它是否更加可靠......但我怀疑这确实是问题所在。 – 2009-11-25 18:11:28

+0

你好,尝试了扩展2,但无济于事。仍然是随机发生的,所以我不知道该怎么做。 – John 2009-11-25 22:41:17