Ubuntu 安装/配置/使用/Sphinx
第1步 - 安装Sphinx
sudo apt-get install aptitude
sudo aptitude install sphinx3 sphinx3-doc sphinxsearch sphinx-common -y
sudo aptitude install libsphinxclient-dev libsphinxclient-0.0.1 -y
sudo apt-get install php-pear php5-dev
sudo pecl uninstall sphinx
sudo pecl install sphinx
第2步 - 创建测试数据库
MYSQL创建
第3步 - 配置Sphinx
源块包含源代码,用户名和密码到MySQL服务器的类型。 所述的第一列sql_query应该是唯一的ID。 SQL查询将在每个索引上运行,并将数据转储到Sphinx索引文件。 下面是每个字段和源块本身的描述。
1.sudo vim /etc/sphinxsearch/sphinx.conf
2.或者用Sphinx的例子文件直接复制
#important
#MYSQL源块
source src1{
type = mysql
#SQL settings (for ‘mysql’ and ‘pgsql’ types)
//MYSQL的配置
sql_host = localhost
sql_user = root
sql_pass = password
sql_db = test
sql_port = 3306 # optional, default is 3306
//导入到Sphinx的MYSQL数据
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
}
#索引组件包含源和存储数据的路径
index test1{
source = src1 //源块的名称。 source的名称 。
path = /var/lib/sphinxsearch/data/test1 //索引保存的路径
docinfo = extern
}
searchd{
//这Sphinx守护进程运行的端口,后面的协议。 在我们的例子,这是9306:mysql41。 已知的协议是:Sphinx (SphinxAPI)和:mysql41(SphinxQL)
listen = 9312:sphinx #SphinxAPI port
listen = 9306:mysql41 #SphinxQL port
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/query.log //路径保存查询日志。
read_timeout = 5 //查询超时时间
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid //进程文件
seamless_rotate = 1
preopen_indexes = 1 //同时旋转海量数据预缓存的指标,防止searchd的摊位
unlink_old = 1 //是否强行盘前在启动时的所有索引
binlog_path = /var/lib/sphinxsearch/data //是否删除成功旋转旧的索引拷贝
}
第4步 - 管理索引
#建立全部索引
sudo indexer --all
#按照指定的配置文件建立索引
sudo indexer -c /etc/sphinxsearch/sphinx.conf test1 --all
#如果数据库变动或者MYSQL字段增多可以执行如下命令,重新加载sphinx配置文件,然后重启
indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all
第5步 - 测试
通过命令去查询
/usr/bin/search "keyword"