2009-11-25 40 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