我有這個使用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