前言,為什麼要安裝LNMP,這個環境以及把常用的MySQL+PHP搭建好了,初學者省去一部分精力調試錯誤,而且LNMP已經很穩定很成熟。
一、 LNMP安裝。
二、 Coreseek(sphinx+mmseg3)安裝。
注意:輸出的warning資訊可以忽略,如果出現error則需要解決,正常無回顯 。
1. 下載下傳coreseek-4.1-beta.tar.gz并解壓。
<a href="http://dl.download.csdn.net/down11/20160530/de90462e2cf8350cbd4ad0f758105c9d.gz?response-content-disposition=attachment%3Bfilename%3D%22coreseek-4.1-beta.tar.gz%22&OSSAccessKeyId=9q6nvzoJGowBj4q1&Expires=1474603028&Signature=rLQ1RFgtXKUJmrbCwDJynFLmRi0%3D" target="_blank">http://dl.download.csdn.net/down11/20160530/de90462e2cf8350cbd4ad0f758105c9d.gz?response-content-disposition=attachment%3Bfilename%3D%22coreseek-4.1-beta.tar.gz%22&OSSAccessKeyId=9q6nvzoJGowBj4q1&Expires=1474603028&Signature=rLQ1RFgtXKUJmrbCwDJynFLmRi0%3D</a>
# cd ~
# wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
# tar zxvf coreseek-4.1-beta.tar.gz
2. 安裝mmseg3
# cd /opt/coreseek-4.1-beta/mmseg-3.2.14
# ./bootstrap
# ./configure --prefix=/usr/local/mmseg3
# make && make install
遇到的問題:
error: cannot find input file: src/Makefile.in
或者遇到其他類似error錯誤時...
解決方案:
依次執行下面的指令,我運作'aclocal'時又出現了錯誤,解決方案請看下文描述
# yum -y install libtool
# aclocal
# libtoolize --force
# automake --add-missing
# autoconf
# autoheader
# make clean
安裝好'libtool'繼續從'aclocal'開始執行上面提到的一串指令,執行完後再運作最開始的安裝流程即可。
3. 安裝coreseek
# cd /opt/coreseek-4.1-beta/csft-4.1
# ./buildconf.sh
//下面參數裡mysql路徑一定要指定
#./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql=/usr/local/mysql
at -L/usr/local/lib -lrt -lpthread
libsphinx.a(sphinx.o): In function `xmlUnknownEncoding':
/root/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22292: undefined reference to `libiconv_open'
/root/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22310: undefined reference to `libiconv'
/root/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22316: undefined reference to `libiconv_close'
collect2: ld returned 1 exit status
make[2]: *** [indexer] Error 1
make[2]: Leaving directory `/root/coreseek-4.1-beta/csft-4.1/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/coreseek-4.1-beta/csft-4.1/src'
make: *** [all-recursive] Error 1
解決方案:
修改MakeFile檔案
#vi /opt/coreseek-4.1-beta/csft-4.1/src
在157行左右增加一個-liconv參數,将
LIBS = -lm -lexpat -L/usr/local/lib
改成
LIBS = -lm -lexpat -liconv -L/usr/local/lib
4. 建立編輯配置檔案。
# cd /usr/local/coreseek/etc
# cp sphinx-min.conf.dist csft.conf
修改下面内容,MySQ連接配接資訊,其他預設。
source spdb1
{
type = mysql
sql_host = localhost
sql_user = test
sql_pass = mima
sql_db = test
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query = SELECT `id`, 1 AS table_id, `username`, `email`, `password` FROM spdb1
sql_attr_uint = table_id #從SQL讀取到的值必須為整數
#sql_attr_timestamp = date_added #從SQL讀取到的值必須為整數,作為時間屬性
sql_query_info_pre = SET NAMES utf8 #指令行查詢時,設定正确的字元集
sql_query_info = SELECT * WHERE ID=$id #指令行查詢時,從資料庫讀取原始資料資訊
}
source spdb2 : spdb1
sql_query = SELECT `id`, 2 AS table_id, `username`, `email`, `password` FROM spdb2
source spdb3 : spdb1
sql_query = SELECT `id`, 3 AS table_id, `username`, `email`, `password` FROM spdb3
source spdb4 : spdb1
sql_query = SELECT `id`, 4 AS table_id, `username`, `email`, `password` FROM spdb4
source spdb5 : spdb1
sql_query = SELECT `id`, 5 AS table_id, `username`, `email`, `password` FROM spdb5
#index定義
index spdb1
source = spdb1 #對應的source名稱
path = /usr/local/coreseek/var/data/spdb1 #請修改為實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
ondisk_dict = 1
html_strip = 0
#中文分詞配置,詳情請檢視:http://www.coreseek.cn/products-install/coreseek_mmseg/
#charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux環境下設定,/符号結尾
charset_dictpath = /usr/local/mmseg3/etc/ #Windows環境下設定,/符号結尾,最好給出絕對路徑,例如:C:/usr/local/coreseek/etc/...
charset_type = zh_cn.utf-8
index spdb2 : spdb1
source = spdb2
path = /usr/local/coreseek/var/data/spdb2
index spdb3 : spdb1
source = spdb3
path = /usr/local/coreseek/var/data/spdb3
index spdb4 : spdb1
source = spdb4
path = /usr/local/coreseek/var/data/spdb4
index spdb5 : spdb1
source = spdb5
path = /usr/local/coreseek/var/data/spdb5
#全局index定義
indexer
mem_limit = 200M #預設32M,不要太大,否則會報錯
#searchd服務定義
searchd
listen = 9312 #查詢服務監聽端口,開啟了才會工作
read_timeout = 5 #逾時
max_children = 30 #最大程序
max_matches = 1000 #傳回1000條
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = /usr/local/coreseek/var/log/searchd.pid #請修改為實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
log = /usr/local/coreseek/var/log/searchd.log #請修改為實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
query_log = /usr/local/coreseek/var/log/query.log #請修改為實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
binlog_path = #關閉binlog日志
5. 一些技巧:
rm -rf /usr/local/coreseek/var/data/*.* //删除已生成的索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all --rotate //生成所有索引
/usr/local/coreseek/bin/searchd --stop //停止服務,重新生成前先停止
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf //啟動searchd服務
/usr/local/coreseek/bin/searchd --status //檢視狀态
/usr/local/coreseek/bin/search 123456 //本機搜尋
rm -rf /var/lock/subsys/mysqld //Mysql易鎖,删除鎖定檔案
單獨生成每個表的索引
/usr/local/coreseek/bin/indexer mydb6 -c /usr/local/coreseek/etc/csft.conf --rotate
/usr/local/coreseek/bin/indexer mydb7 -c /usr/local/coreseek/etc/csft.conf --rotate
更新增量索引
/usr/local/coreseek/bin/indexer delta -c /usr/local/coreseek/etc/csft.conf --rotate
合并2個表索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --merge mydb1 mydb2 --rotate --merge-dst-range deleted 0 0
參考文章:
<a href="http://www.111cn.net/database/mysql/87753.htm" target="_blank">http://www.111cn.net/database/mysql/87753.htm</a>
<a href="http://blog.chinaunix.net/uid-20639775-id-3261834.html" target="_blank">http://blog.chinaunix.net/uid-20639775-id-3261834.html</a>
本文轉自 piazini 51CTO部落格,原文連結:http://blog.51cto.com/wutou/1856189