《CMS案例:phpcms v9 配置sphinx全文索引教程》要點:
本文介紹了CMS案例:phpcms v9 配置sphinx全文索引教程,希望對您有用。如果有疑問,可以聯系我們。
相關主題:PHPCMS教程
CMS系統一、首先需要在服務器上安裝sphinx
在Windows上安裝sphinx
? ? 1.下載支持mysql的包??http://www.sphinxsearch.com/downloads/sphinx-0.9.9-win32.zip
? ? 2.解壓縮 sphinx-0.9.9-win32.zip 到 D:\sphinx
? ? 3.安裝sphinx服務,在命令行執行命令
CMS系統
??? 英文參照:http://www.sphinxsearch.com/docs?... #installing-windows
在Linux服務器上安裝sphinx
? ?1.下載源碼包?http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
?CMS系統$ tar xzvf sphinx-0.9.8.tar.gz
$ cd sphinx
$?./configure?--prefix=/usr/local/sphinx?--with-mysql=/usr/local/mysql
$ make
$ make install
CMS系統?常見問題1
?CMS系統
? ? ? ? ? ? ? ??/usr/local/sphinx-0.9.9/src/sphinx.cpp:20060:?undefined?reference to?`libiconv_open'
? ? ? ? ? ? ? ? /usr/local/sphinx-0.9.9/src/sphinx.cpp:20078: undefined reference to `libiconv'
? ? ? ? ? ? ? ? /usr/local/sphinx-0.9.9/src/sphinx.cpp:20084: undefined reference to `libiconv_close'
? ? ? ? ? ? ? ? collect2:?ld returned?1?exit?status
? ? ? ? ? ? ? ? make[2]:?***?[indexer]?Error?1
? ? ? ? ? ? ? ? make[2]:?Leaving?directory?`/home/jling/sphinx-0.9.9/src'
? ? ? ? ? ? ? ? make[1]: *** [all] Error 2
? ? ? ? ? ? ? ? make[1]: Leaving directory `/home/jling/sphinx-0.9.9/src'
? ? ? ? ? ? ? ? make: *** [all-recursive] Error 1
CMS系統解決辦法:打開configure文件,找到“#define USE_LIBICONV 1”,將注釋去掉,并將1改成0.
CMS系統
常見問題2
?CMS系統
? ? ? ? ? ? ? ? error?while?loading shared libraries:?libmysqlclient.so.16:?cannot open shared?object?file:?No?such file?or?directory
CMS系統
解決辦法:
?CMS系統
? ? ? ? ? ? ? ??64位系統ln?-s?/usr/local/webserver/mysql/lib/mysql/libmysqlclient.so.16.0.0?/usr/lib64/libmysqlclient.so.16
? ? ? ? ? ? ? ??32位系統ln?-s?/usr/local/webserver/mysql/lib/mysql/libmysqlclient.so.16.0.0?/usr/lib/libmysqlclient.so.16
CMS系統?
CMS系統sphinx.conf樣例 ?
?CMS系統source main
? ? ? ? ? ? ? ??{
? ? ? ? ? ? ? ? ?type ? ??=?mysql ? ?#數據庫類型
? ? ? ? ? ? ? ? ?sql_host ? ?=?10.228.134.211?#數據庫ip
? ? ? ? ? ? ? ? ?sql_user ? ?=?admin ? ?#數據庫用戶名
? ? ? ? ? ? ? ? ?sql_pass ? ?=?admin ? ?#數據庫密碼
? ? ? ? ? ? ? ? ?sql_db ? ??=?phpcms_v9 ??#數據庫名
? ? ? ? ? ? ? ? ?sql_port ? ?=?3306?? ?# 數據庫端口CMS系統? sql_query_pre = SET NAMES utf8
? ? ? ? ? ? ? ? ?sql_query_pre?=?REPLACE INTO v9_sphinx_counter SELECT?1,?MAX(searchid)?FROM v9_search
? ? ? ? ? ? ? ? ?sql_query?=?SELECT searchid,?adddate,?siteid,?typeid,?id,?data FROM v9_search?\
? ? ? ? ? ? ? ? ? ? WHERE searchid>=$start AND searchid<=$end
? ? ? ? ? ? ? ? ?sql_query_range ?=?SELECT?1,max_doc_id FROM v9_sphinx_counter WHERE counter_id=1
? ? ? ? ? ? ? ? ?sql_range_step?=?5000CMS系統??#字符串屬性設置、需要過濾、排序的時候用到
? ? ? ? ? ? ? ? ?sql_attr_uint ?=?typeid
? ? ? ? ? ? ? ? ?sql_attr_uint ?=?siteid
? ? ? ? ? ? ? ? ?sql_attr_uint ?=?id
? ? ? ? ? ? ? ? ?sql_attr_timestamp ?=?adddate
? ? ? ? ? ? ? ? ?sql_query_info ?=?SELECT?*?FROM v9_search WHERE searchid=$id
? ? ? ? ? ? ? ??}CMS系統?source delta
? ? ? ? ? ? ? ??{
? ? ? ? ? ? ? ? ?type ? ??=?mysql ? ?#數據庫類型
? ? ? ? ? ? ? ? ?sql_host ? ?=?10.228.134.211?#數據庫ip
? ? ? ? ? ? ? ? ?sql_user ? ?=?admin ? ?#數據庫用戶名
? ? ? ? ? ? ? ? ?sql_pass ? ?=?admin ? ?#數據庫密碼
? ? ? ? ? ? ? ? ?sql_db ? ??=?phpcms_v9 ??#數據庫名
? ? ? ? ? ? ? ? ?sql_port ? ?=?3306?? ?# 數據庫端口CMS系統? ? ?sql_query_pre = SET NAMES utf8
? ? ? ? ? ? ? ? ? ? sql_query?=?SELECT searchid,?adddate,?siteid,?typeid,?id,?data FROM v9_search?\
? ? ? ? ? ? ? ? ? WHERE searchid?>(?SELECT max_doc_id FROM v9_sphinx_counter WHERE counter_id=1?)
? ? ? ? ? ? ? ? ?sql_query_post?=?REPLACE INTO v9_sphinx_counter SELECT?1,?MAX(searchid)?FROM v9_search
? ? ? ? ? ? ? ? ?#字符串屬性設置、需要過濾、排序的時候用到
? ? ? ? ? ? ? ? ?sql_attr_uint ?=?typeid
? ? ? ? ? ? ? ? ?sql_attr_uint ?=?siteid
? ? ? ? ? ? ? ? ?sql_attr_uint ?=?id
? ? ? ? ? ? ? ? ?sql_attr_timestamp ?=?adddate
? ? ? ? ? ? ? ? ?sql_query_info ?=?SELECT?*?FROM v9_search WHERE searchid=$id
? ? ? ? ? ? ? ??}CMS系統?#主索引
? ? ? ? ? ? ? ? index main
? ? ? ? ? ? ? ??{
? ? ? ? ? ? ? ? ?source?=?main
? ? ? ? ? ? ? ? ?# 放索引的目錄
? ? ? ? ? ? ? ? ?path?=?D:\sphinx\data\main
? ? ? ? ? ? ? ? ?# 編碼
? ? ? ? ? ? ? ? ?charset_type?=?utf-8
? ? ? ? ? ? ? ? ?# 指定utf-8的編碼表
? ? ? ? ? ? ? ? ?charset_table?=?0..9,?A..Z->a..z,?_,?a..z,?U+410..U+42F->U+430..U+44F,?U+430..U+44F
? ? ? ? ? ? ? ? ?# 簡單分詞,只支持0和1,如果要搜索中文,請指定為1
? ? ? ? ? ? ? ? ?ngram_len?=?1
? ? ? ? ? ? ? ? ?# 需要分詞的字符,如果要搜索中文,去掉前面的注釋
? ? ? ? ? ? ? ? ?ngram_chars ??=?U+3000..U+2FA1F
? ? ? ? ? ? ? ??}CMS系統?#增量索引
? ? ? ? ? ? ? ? index delta
? ? ? ? ? ? ? ??{
? ? ? ? ? ? ? ? ? ? source?=?delta
? ? ? ? ? ? ? ? ? ? path?=?D:\sphinx\data\delta
? ? ? ? ? ? ? ? ?# 編碼
? ? ? ? ? ? ? ? ?charset_type?=?utf-8
? ? ? ? ? ? ? ? ?# 指定utf-8的編碼表
? ? ? ? ? ? ? ? ?charset_table?=?0..9,?A..Z->a..z,?_,?a..z,?U+410..U+42F->U+430..U+44F,?U+430..U+44F
? ? ? ? ? ? ? ? ?# 簡單分詞,只支持0和1,如果要搜索中文,請指定為1
? ? ? ? ? ? ? ? ?ngram_len?=?1
? ? ? ? ? ? ? ? ?# 需要分詞的字符,如果要搜索中文,去掉前面的注釋
? ? ? ? ? ? ? ? ?ngram_chars ??=?U+3000..U+2FA1F
? ? ? ? ? ? ? ??}
? ? ? ? ? ? ? ? ?CMS系統?indexer
? ? ? ? ? ? ? ??{
? ? ? ? ? ? ? ? ?mem_limit ? ?=?128M
? ? ? ? ? ? ? ??}CMS系統?searchd
? ? ? ? ? ? ? ??{
? ? ? ? ? ? ? ? ?port ? ??=?9312
? ? ? ? ? ? ? ? ?log ? ? ?=?D:\sphinx\data\phpcms\searchd.log
? ? ? ? ? ? ? ? ?query_log ? ?=?D:\sphinx\data\phpcms\query.log
? ? ? ? ? ? ? ? ?read_timeout ??=?5
? ? ? ? ? ? ? ? ?max_children ??=?30
? ? ? ? ? ? ? ? ?pid_file ? ?=?D:\sphinx\data\phpcms\searchd.pid
? ? ? ? ? ? ? ? ?max_matches ? ?=?2000
? ? ? ? ? ? ? ? ?seamless_rotate ??=?0
? ? ? ? ? ? ? ? ?preopen_indexes ??=?0
? ? ? ? ? ? ? ? ?unlink_old ? ?=?1
? ? ? ? ? ? ? ??}
CMS系統?
CMS系統附件:設置計劃任務更新索引
1.windows下
需要設置計劃任務
#凌晨4點合并索引,執行merge.bat
#其余時間每分鐘更新索引,執行delta.bat
?
merge.bat ?
? ? ? ?CMS系統
? ? ? ? ? ? ? ??@ECHO?off
? ? ? ? ? ? ? ? D:\sphinx\bin\indexer.exe?--config D:\sphinx\sphinx.conf?--merge main delta?--rotate
? ? ? ? ? ? ? ? echo indexing,?window will close?when?complete
? ? ? ? ? ? ? ? ?
CMS系統?
CMS系統delta.bat
?CMS系統
? ? ? ? ? ? ? ??@ECHO?off
? ? ? ? ? ? ? ? D:\sphinx\bin\indexer.exe?--config D:\sphinx\sphinx.conf delta?--rotate
? ? ? ? ? ? ? ? echo indexing,?window will close?when?complete
CMS系統
2.linux下編輯定時任務 crontab -e
?CMS系統
? ? ? ? ? ? ? ??#凌晨4點合并索引,其余時間每分鐘更新索引
? ? ? ? ? ? ? ??*?0-3?*?*?*?/usr/local/sphinx/bin/indexer?--config?/usr/local/sphinx/etc/sphinx.conf delta?--rotate
? ? ? ? ? ? ? ??*?6-23?*?*?*?/usr/local/sphinx/bin/indexer?--config?/usr/local/sphinx/etc/sphinx.conf delta?--rotate
? ? ? ? ? ? ? ??0?4?*?*?*?/usr/local/sphinx/bin/indexer?--config?/usr/local/sphinx/etc/sphinx.conf?--merge main delta?--rotate
CMS系統
各種路徑、權限需要應用所在服務器一致,如:
sphinx.conf 中需要配置
sql_host 數據庫主機地址
sql_user 數據庫用戶名
sql_pass 數據庫密碼
sql_db 數據庫名
sql_port 數據庫端口
phpcms表前綴樣例中為phpcms_
索引路徑 D:\sphinx\data\delta
CMS系統?
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/5815.html