[返回目录](index.html)#### [高级应用与部署](gaoji_index.html "高级应用与部署") —— [sphinx全文索引教程](gaoji_sphinx.html "sphinx全文索引教程")
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。
PHPCMS V9支持这一技术,当然我们需要事先在服务器上做一些相应的部署
英文介绍:http://www.sphinxsearch.com/docs/manual-0.9.9.html
##### 一、安装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服务,在命令行执行命令
```
<pre class="brush:xml">D:\sphinx\searchd --install --config d:\sphinx\sphinx.conf --servicename SphinxSearch
```
英文参照:http://www.sphinxsearch.com/docs ###### 在Linux服务器上安装sphinx
1.下载源码包 http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
```
<pre class="brush:xml">
$ tar xzvf sphinx-0.9.8.tar.gz
$ cd sphinx
$ ./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql
$ make
$ make install
```
问题一
```
<pre class="brush:xml">
/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
```
解决办法:打开configure文件,找到“#define USE\_LIBICONV 1”,将注释去掉,并将1改成0。
问题二
```
<pre class="brush:xml"> error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory
```
解决办法:
```
<pre class="brush:xml">
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
```
sphinx.conf样例
```
<pre class="brush:xml">
source main
{
type = mysql #数据库类型
sql_host = 10.228.134.211 #数据库ip
sql_user = admin #数据库用户名
sql_pass = admin #数据库密码
sql_db = phpcms_v9 #数据库名
sql_port = 3306 # 数据库端口
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 = 5000
#字符串属性设置、需要过滤、排序的时候用到
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
}
source delta
{
type = mysql #数据库类型
sql_host = 10.228.134.211 #数据库ip
sql_user = admin #数据库用户名
sql_pass = admin #数据库密码
sql_db = phpcms_v9 #数据库名
sql_port = 3306 # 数据库端口
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
}
#主索引
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
}
#增量索引
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
}
indexer
{
mem_limit = 128M
}
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
}
```
##### 附件:设置计划任务更新索引
###### 1.windows下
需要设置计划任务
\#凌晨4点合并索引,执行merge.bat
\#其余时间每分钟更新索引,执行delta.bat
merge.bat
```
<pre class="brush:xml">
@ECHO off
D:\sphinx\bin\indexer.exe --config D:\sphinx\sphinx.conf --merge main delta --rotate
echo indexing, window will close when complete
```
delta.bat
```
<pre class="brush:xml">
@ECHO off
D:\sphinx\bin\indexer.exe --config D:\sphinx\sphinx.conf delta --rotate
echo indexing, window will close when complete
```
###### 2.linux下编辑定时任务 crontab -e
```
<pre class="brush:xml">
#凌晨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
```
各种路径、权限需要应用所在服务器一致,如: sphinx.conf 中需要配置
sql\_host 数据库主机地址
sql\_user 数据库用户名
sql\_pass 数据库密码
sql\_db 数据库名
sql\_port 数据库端口
phpcms表前缀样例中为phpcms\_
索引路径 D:\\sphinx\\data\\delta
phpcmsv9\_withsphinx.zip
[返回目录](index.html) 上海盛大网络发展有限公司 c 2006 - 2011 B2-20040053.
问题和建议请反馈至:http://bbs.phpcms.cn
- 首页
- 简介
- PHPCMS v9 安装环境要求
- 安装
- Linux 环境搭建推荐教程
- Windows 环境搭建推荐教程
- CentOS5下Nginx 环境推荐教程
- PC_webserver 安装说明
- PHPCMS V9 安装说明
- 使用
- 后台主界面
- 我的面板
- 修改个人信息
- 修改密码
- 生成首页
- 设置
- 相关设置
- 站点管理
- 发布点管理
- 基本设置
- 安全配置
- PHPSSO配置
- 邮箱配置
- connect
- 管理员设置
- 管理员管理
- 角色管理
- 模块
- 模块管理
- 模块管理
- 在线充值
- 短信平台
- 物流管理
- 外部数据导入
- 点评
- 表单向导
- 手机门户
- 广告
- 新闻心情
- 短消息
- 投票
- 友情链接
- 评论
- 公告
- 全站搜索
- 数据源
- 企业黄页
- 模块配置
- 分类管理
- 黄页模型管理
- 企业模板管理
- 信息管理
- 企业库管理
- 批量更新URL
- 内容
- 内容发布管理
- 管理内容
- 附件管理
- 专题
- 碎片管理
- 采集管理
- 评论管理
- 发布管理
- 批量更新栏目页
- 生成首页
- 批量更新URL
- 批量更新内容页
- 同步到发布点
- 内容相关设置
- 管理栏目
- 模型管理
- 类别管理
- 推荐位管理
- 用户
- 会员管理
- 会员管理
- 审核会员
- 会员模块配置
- 会员组管理
- 管理会员组
- 会员模型管理
- 管理会员模型
- 界面
- 模板风格
- 标签向导
- 扩展
- 附加字段管理
- 在线升级
- 信息模型设置
- 前台菜单管理
- 来源管理
- 木马查杀
- 更新全站缓存
- 后台操作日志
- 下载镜像管理
- IP禁止
- URL规则管理
- 数据库工具
- 菜单管理
- 敏感词管理
- Baibu/Google地图
- 关联链接
- 联动菜单
- 工作流
- phpsso
- 会员管理
- 应用管理
- 通信信息
- 积分兑换
- 管理员管理
- 系统设置
- 更新缓存
- 修改密码
- 应用
- 升级与转换
- 程序升级
- 离线升级
- 在线升级
- 程序转换
- phpcms2008 to v9
- phpcms2007 to v9
- DEDECMS 5.6 to v9
- 帝国cms 6.5 to v9
- PHP168 Sharp to v9
- 万能数据导入
- 整合文档
- 整合Discuz 7.0 - X1.5
- 整合Discuz X2
- 整合PHPWIND 8.7
- 标签使用
- PC标签使用说明
- PC标签保留参数
- 系统常量
- 功能模块
- 内容模块
- 评论模块
- 投票模块
- 公告模块
- 专题模块
- 会员模块
- 友情链接模块
- 黄页模块
- 工具箱
- json工具箱
- xml工具箱
- get标签
- 碎片工具箱
- 高级应用与部署
- Apache下Rewrite设置
- Sphinx全文索引教程
- Mysql开启全文索引
- Mysql优化
- 修改后台路径
- 数据库分离部署
- 万能字段应用
- 推荐位高级应用
- 主程序与web目录分离
- 第三方手册
- JQuery 手册
- artDialog 手册
- formValidator手册
- calendar手册
- CKEditor
- 二次开发
- 目录结构分析
- 数据库结构
- 二次开发流程
- 入口程序
- 系统类库与函数库调用
- 配置文件调用
- 函数扩展
- 控制器扩展技巧
- 常见问题
- 采集过滤规则无效
- 网站更换域名怎么办?
- 后台登陆提示验证码错误
- 应用间同步登陆问题
- 提示通信失败,用户登录失败
- 如何将静态文件生成到根目录
- 为什么添加的内容没有生成静态?