最近組裡同事開發專案時遇到乙個sphinx的問題,表面上看起來沒有問題的**,實際執行時卻總是無法的到正常的結果。
我看了一下,主要的**片段如下:
//高亮顯示的配置引數的陣列 $opts = array( "before_match" => "", "after_match" => "", "chunk_separator" => "...", "limit" => 60, "around" => 25, "single_passage" => true, "exact_phrase" => false ); ...... //高亮顯示 $highlight_name_array = search_highlight( $name_docs, $index, $words, $opts ); $highlight_description_array = search_highlight( $description_docs, $index, $words, $opts ); ...... function search_highlight( $docs, $index, $words, $opts )
遇到的情況卻是標題裡的高亮顯示沒有問題,但是介紹裡的高亮卻總是沒有辦法出來。
經過反覆除錯,發現和引數傳遞,過程處理,字元編碼都沒有關係,得到的結果在第二句search_highlight處理時總是固執的沒有任何變化。
後來又把問題放在了引數設定上,將single_passage、exact_phrase兩個引數去掉,替換before_match、after_match,都沒有得到任何的成效。
一籌莫展時,突然看到了around這個引數,一般我們都設定為3,而這裡設定為30,把這個引數改一改試試,發現it works!
經過除錯,發現around值為25的時候能滿足功能和產品的需求。
這個問題可能是sphinx的乙個bug,在某些特定條件下高亮的擷取會失敗,在有時間的時候我會閱讀原始碼來調查這個問題的產生根源。
sphinx實時索引和高亮顯示
時間 2014 06 25 14 50 58 linux技術分享 歐陽部落格 原文 主題 sphinx 資料庫上次介紹了coreseek與sphinx的區別,並詳細記錄了安裝coreseek文件說明,以及給php加上sphinx模組,詳細內容請參考我寫的coreseek詳解這篇文件,這次主要介紹sp...
NFS故障解決
1 nfsd沒有啟動起來 首先要確認 nfs 輸出列表存在,否則 nfsd 不會啟動。可用 exportfs 命令來檢查,如果 exportfs 命令沒有結果返回或返回不正確,則需要檢查 etc exports 檔案。2 mountd 程序沒有啟動 mountd 程序是乙個遠端過程呼叫 rpc 其作...
ORACLE SID故障解決
oracle sid故障解決 如果未設系統環境變數oracle sid將導致ora 12162錯誤 tns net service name is incorrectly specified。www.2cto.com 1 獲取ora 12162報錯資訊通用表述資訊 oracle asdlabdb01...