安裝sphinx是學(xué)習(xí)sphinx的第一步,這里詳細(xì)給大家講解一下。
更新依賴包以及安裝編譯環(huán)境
yum -y install m4 autoconf automake libtool
yum -y install gcc gcc-c++ wget
yum -y install mysql-devel
下載coreseek
wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
##mmseg3是一個(gè)中文分詞插件
tar xzvf coreseek-3.2.14.tar.gz
cd coreseek-3.2.14
cd mmseg-3.2.14/
./bootstrap
./configure --prefix=/usr/local/mmseg3
make
make install
cd ../csft-3.2.14/
sh buildconf.sh
./configure --prefix=/usr/local/coreseek --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql --host=arm
vi src/sphinxexpr.cpp
執(zhí)行完上一步如果報(bào)錯(cuò) 就執(zhí)行下面這一步 如果不報(bào)錯(cuò) 就跳過這一步 直接make
然后將所有的T val = ExprEval ( this->m_pArg, tMatch ).....修改為
T val = this->ExprEval ( this->m_pArg, tMatch )
make
make install
cd /usr/local/coreseek/etc
進(jìn)入配置目錄通過命令ls可以看到3個(gè)文件
example.sql sphinx.conf.dist sphinx-min.conf.dist
其中example.sql是示例sql腳本我們將其導(dǎo)入到數(shù)據(jù)庫中的test數(shù)據(jù)庫中作為測試數(shù)據(jù)(會(huì)創(chuàng)建兩張表 documents和tags)
=============================================================================
vi sphinx.conf
輸入以下內(nèi)容
source src1
{
type = mysql //數(shù)據(jù)庫類型
sql_host = localhost //主機(jī)
sql_user = root //用戶名
sql_pass =12345678 //密碼
sql_db = test //檢索數(shù)據(jù)庫名
sql_port = 3306 # optional, default is 3306
sql_sock = /tmp/mysql.sock
sql_query_pre = SET NAMES utf8
sql_query = \
SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
FROM documents
sql_attr_uint = group_id
sql_attr_timestamp = date_added
sql_query_info = SELECT * FROM documents WHERE id=$id
}
index test1
{
source = src1
path = /usr/local/coreseek/var/data/test1
docinfo = extern
charset_type = zh_cn.utf-8
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
charset_dictpath = /usr/local/mmseg3/etc/
ngram_len = 0
}
indexer
{
mem_limit = 32M
}
searchd
{
port = 9312
log = /usr/local/coreseek/var/log/searchd.log
query_log = /usr/local/coreseek/var/log/query.log
read_timeout = 5
max_children = 30
pid_file = /usr/local/coreseek/var/log/searchd.pid
max_matches = 1000
seamless_rotate = 1
preopen_indexes = 0
unlink_old = 1
}
說明:
代碼段source src1{***} 代表數(shù)據(jù)源里面主要包含了數(shù)據(jù)庫的配置信息,src1表示數(shù)據(jù)源名字,可以隨便寫。
代碼段index test1{***} 代表為哪個(gè)數(shù)據(jù)源創(chuàng)建索引,與source *** 是成對(duì)出現(xiàn)的,其中的source參數(shù)的值必須是某一個(gè)數(shù)據(jù)源的名字。
其他參數(shù)可以查看手冊(cè),這里不再贅述。
生成索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all
其中參數(shù)--all表示生成所有索引
當(dāng)然也可以是索引的名字例如:/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf test1
執(zhí)行后可以在/usr/local/coreseek/var/data目錄中看到多出一些文件,是以索引名為文件名的不同的擴(kuò)展名的文件
在不啟動(dòng)sphinx的情況下即可測試命令:
/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf number
原文來自:博客園/進(jìn)化史