coreseek常見錯誤原因及解決方法
Coreseek 中文全文檢索引擎
Coreseek 是一款中文全文檢索/搜索軟件,以GPLv2許可協議開源發布,基於Sphinx研發並獨立發布,專攻中文搜索和信息處理領域,適用於行業/垂直搜索、論壇/站內搜索、數據庫搜索、文檔/文獻檢索、信息檢索、數據挖掘等應用場景,用戶可以免費下載使用
本文為大家整理了coreseek/sphinx中文檢索引擎的常見問題和解決方法,感興趣的同學參考下。
Coreseek 是一款中文全文檢索/搜索軟件,以GPLv2許可協議開源發布,基於Sphinx研發並獨立發布,專攻中文搜索和信息處理領域,適用於行業/垂直搜索、論壇/站內搜索、數據庫搜索、文檔/文獻檢索、信息檢索、數據挖掘等應用場景,用戶可以免費下載使用
1. Unigram dictionary load Error:
詞典路徑設置不正確,所設置的路徑下沒有uni.lib;特別要注意使用相對路徑時,是否正確對應到了實際的目錄;測試是否存在,可以在命令行執行:dir charset_dictpath所設置的目錄,檢查是否存在!
2. Segmentation fault 或者 段錯誤:可能原因如下
詞典路徑設置不正確,或者自己構造的詞典數據過多(建議不超過20w條);
max_matches參數設置過大,建議設置在10000以內;
3. iniparser: cannot open ......mmseg.ini:
mmseg.ini沒有設置,請在提示的位置創建mmseg.ini,然后前往mmseg.ini參考設置所需要的參數即可!
4. FATAL: failed to parse config file '......csft.conf':
或者:FATAL: config file '......csft.conf' does not exist or is not readable 沒有設置配置文件或者配置文件位置不正確,使用相對路徑時需要特別注意(例如在bin目錄中直接運行indexer);請使用“-c 配置文件完整路徑/csft.conf”,來進行設置
5. WARNING: no such index '......', skipping.:
配置文件中沒有找到對應的索引名稱,請查看提示的名稱是否設置!
6. ERROR: unknown key name 'charset_dictpath' in ......:
當前運行的程序不支持或者沒有安裝啟用中文分詞,請參考安裝說明進行操作以便支持中文分詞
7. FATAL: index '......': unknown charset type 'zh_cn.utf-8':
沒有設置charset_dictpath,或者charset_dictpath設置的路徑下沒有uni.lib;或者使用的不是coreseek。
8. Windows下面出現"應用程序錯誤:應用程序無法正常啟動(0x????????)。請單擊”確定“關閉應用程序。":(如下圖所示)
此時需要下載安裝Python2.6 Windows (x86);請使用x86版本,如果使用64位版本的Python將無法正常運行。
9. 編譯時錯誤提示:undefined reference to:
posixmodule.c:(.text+0x367e): undefined reference to `forkpty'
posixmodule.c:(.text+0x3714): undefined reference to `openpty'
啟用Python數據源支持時,沒有按照提示設置LIBS,請查看安裝指南Python數據源部分設置LIBS,然后重新configure后編譯安裝
10. 編譯時錯誤提示:typedef unsigned int DWORD
/usr/local/mmseg3/include/mmseg/csr_typedefs.h:64: 錯誤: 相互沖突的聲明‘typedef unsigned int DWORD’
/usr/include/sqltypes.h:97: 錯誤: ‘DWORD’早先被聲明為‘typedef long unsigned int DWORD’
解決方法:vi /usr/local/mmseg3/include/mmseg/csr_typedefs.h,到64行,注釋該行,保存退出重新編譯即可!
11. failed to open ....spl或者FATAL: no valid indexes to serve或者類似錯誤提示:
首先,執行命令:dir 提示的文件,檢查提示的文件是否存在;
其次,執行命令:dir 提示的文件所在目錄,檢查提示的文件所在目錄是否存在;
然后,請確認是否執行了indexer並正確建立了索引;
特別要注意,要在出現以上提示后,馬上執行上面的命令檢查;
如果,使用相對路徑時,要仔細檢查是否正確對應到了實際的目錄;
12. Windows下面出現"應用程序錯誤:應用程序無法正常啟動(0x????????)。請單擊”確定“關閉應用程序。":(如下圖所示)
如果使用coreseek 3.x,此時需要下載安裝Microsoft Visual C++ 2005 Redistributable Package (x86,2.6M大小);請使用x86版本,如果使用64位版本的將無法正常運行。
如果使用coreseek 4.x,此時需要下載安裝Microsoft Visual C++ 2008 Redistributable Package (x86,1.7M大小);請使用x86版本,如果使用64位版本的將無法正常運行。
13. 搜索時出現:unknown local index '索引名稱' in search request:
該提示表示Query("搜索字符串","索引名稱")時的第二個參數-索引名稱-在配置文件中不存在,請仔細核對!或者將其修改為“*”,表示在所有索引中搜索!
14. Windows2003:The Application failed to initialize properly ( 0xc0150002 )或者“應用程序錯誤:應用程序無法正常啟動(0x????????)。”
可以安裝:Microsoft Visual C++ 2005 SP1 Redistributable Package (x86),進行測試,下載地址:http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=zh-cn
15. Query()查詢后沒有結果?
如果是PHP環境,請使用
print("<pre>"); print_r($cl->GetLastError()); print_r($cl->GetLastWarning ()); print_r($res); print("$lt;pre>")
來輸出當前狀態並獲取提示信息。其中$cl表示SphinxClient對象實例,$res表示Query()的返回;其他語言類似處理。
16. 索引時提示:FATAL: out of memory (unable to allocate ?????? bytes)
該提示表示當前環境下,可以使用的內存不足夠;可能是因為其他程序占用內存較多導致可用內存太少;也有可能是因為配置中mem_limit設置太大。
17. searchd啟動時提示:bind() failed on ......, retrying...
該提示表示已有其他搜索服務運行,或者有其他程序占用了配置文件中設置的端口;
如果是Linux/BSD環境,可以通過ps auxww | grep searchd查看當前運行的searchd程序,使用kill殺滅無需使用的進程;
如果是Windows環境,可以使用任務管理器查看當前運行的程序,並結束無需使用的程序。
18. Windows下安裝為系統服務,啟動時出現1067錯誤;或者啟動出現錯誤:FATAL: failed to create pid file
該問題出現的原因比較復雜,可能與配置有關,也可能與Windows自身環境有關(Windows自己都可能出現內存錯誤等)。有可能的解決方法:
將配置文件中的所有路徑設置,修改為絕對路徑,路徑不得包含中文,也不得包含空格,路徑分隔符使用“/”而不是“\”,例如:應該使用c:/usr/local/coreseek/etc/,而不使用c:\usr\local\coreseek\etc\
19. 命令行search搜索結果的字段中出現亂碼或者???怎么辦:
首先,該亂碼只是顯示亂碼,對搜索不產生任何影響,只是因為mysql默認字符集導致查詢結果讀取數據顯示出來不正確;
然后,如果使用的是MySQL4.1、MySQL5.0.x、MySQL5.1.x,請設置my.cnf(Linux/BSD)或者my.ini(Windows),在[client]、[mysql]、[mysqld]的配置段下面,設置或者加上:
default-character-set=utf8
接着,重啟mysql服務,繼續查詢即可正確顯示。
注意:Windows需要按照Windows系統安裝測試說明文檔中方式正確查詢和顯示UTF-8字符。
20. 索引或者查詢時提示:no such filter attribute '
請仔細查看屬性說明,請確保你調用的屬性或者字段名使用"sql_attr_類型"設置了。
21. 編譯時,出現 DWORD 錯誤:
如果編譯中出現如下錯誤:
DWORD定義沖突: /usr/local/mmseg3/include/mmseg/csr_typedefs.h:64: 錯誤: 相互沖突的聲明‘typedef unsigned int DWORD’
/usr/include/sqltypes.h:97: 錯誤: ‘DWORD’早先被聲明為‘typedef long unsigned int DWORD’
解決方法:vi /usr/local/mmseg3/include/mmseg/csr_typedefs.h,到64行,注釋該行,保存退出重新編譯即可!
22. 索引或者查詢時提示:ERROR: invalid token in 配置文件 line 1 col 1.:
該提示表示當前的配置文件的編碼不是UTF-8(無BOM頭)格式,無法正確解析,請使用編輯軟件打開配置文件,另存為UTF-8(無BOM頭)格式;
錯誤的編碼格式包括:Unicode、Unicode BOM、Unicode big endian、Unicode 低位在前、UTF-8 + BOM、UTF-8 Signature、UTF-8 包含簽名等;
特別注意:Windows自帶的記事本(Notepad)或者寫字板(WordPad)無法正確保存為所需格式,請勿使用其編輯配置文件;
推薦編輯器:點擊下載Notepad2綠色版;使用Notepad2打開配置文件,依次選擇:“文件”菜單--“編碼”--“UTF-8”,然后保存文件(快捷鍵CTRL+S)即可。
23. ERROR: connection to localhost:**** failed (errno=111, msg=Connection refused).:
原因很簡單,可能為:1. searchd沒有啟動;2. 連接的IP和端口不正確;3. 跨服務器時,檢查防火牆是否允許連接。
24. 編譯時提示:libtool: unrecognized option `--tag=CC' ...... make[2]: *** ......:
系統上老版本libtool的配置影響了libtool的正常使用,執行mv /usr/share/libtool /usr/share/libtool_old ; ln -s /usr/local/share/libtool /usr/share/libtool,然后再次解壓coreseek(先刪除舊的),並重新進行安裝編譯過程。
25. 搜索時提示:searchd error: client version is higher than daemon version ......:
該問題說明你所使用的SphinxClient接口,與服務器端的版本不一致。需要使用安裝Coreseek/Sphinx的包里面的api/目錄下對應的Client庫。
26. 編譯時提示:tokenizer_zhcn.h:26:30: error: SegmenterManager.h:
該問題說明編譯mmseg的時候,沒有執行:$ ./bootstrap,請前往編譯安裝指南查看具體步驟。
27. 編譯時提示:undefined reference to `libiconv':
該問題說明當前環境的iconv沒有安裝或者沒有正確設置,請前往編譯安裝指南查看具體解決方法。