英文介绍: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服务,在命令行执行命令

D:\sphinx\searchd --install --config d:\sphinx\sphinx.conf --servicename SphinxSearch

英文参照:http://www.sphinxsearch.com/docs ... #installing-windows

在Linux服务器上安装sphinx
   1.下载源码包 http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz

$ tar xzvf sphinx-0.9.8.tar.gz
$ cd sphinx
$ ./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql
$ make
$ make install

常见问题1

/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

解决办法:打开configure文件,找到“#define USE_LIBICONV 1”,将注释去掉,并将1改成0。

常见问题2

error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory

解决办法:

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样例

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

@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

@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

#凌晨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

phpcms v9 配置sphinx全文索引教程的更多相关文章

  1. phpcms V9 整合 Discuz! X2 教程

    整合原理: UCenter 作服务端:phpsso 与 Discuz! 分别作 UCenter 的客户端应用:phpsso 与 Discuz! 通过 UCenter 发生交互. phpcms 通过 p ...

  2. Phpcms V9手机门户设置教程:怎么用PC V9做手机网站

    一.在PHPcms V9管理后台设置手机门户 1.1.开启手机网站.位置:模块 >手机门户 > 添加手机站点,具体设置可参照截图: 填写站点名和LOGO文件相对位置,绑定用于手机网站的二级 ...

  3. PHPCMS v9 超级安全防范教程!

    一.目录权限设置很重要:可以有效防范黑客上传木马文件.如果通过 chmod 644 * -R 的话,php文件就没有权限访问了.如果通过chmod 755 * -R 的话,php文件的权限就高了. 所 ...

  4. Sphinx全文索引安装教程

    首先了解一下sphinx全文索引的相关知识官方网站:http://www.sphinxsearch.com/ 官方文档:http://www.sphinxsearch.com/docs/ 中文支持:h ...

  5. PHPCMS V9教程之快速入门

    这篇文章要为大家来介绍PHPCMS V9这个系统的一些基本知识,PHPCMS是基于面向对象的,严格的安装MVC开发模式开发的CMS系统,同时他还是一个非 常不错的PHP框架.下面我们一起看一下PHPC ...

  6. phpcms v9实现wap单页教程

    下面以添加“关于我们”这一单页为例作phpcms V9 wap手机门户添加单页的教程说明: 步骤一:复制phpcms\templates\default\wap下的maps.html,粘贴重命名为ab ...

  7. phpcms v9无法连接数据库服务器,请检查配置

    安装phpcms v9是数据库信息配置正确,但仍提示:无法连接数据库服务器,请检查配置 1.修改install/step5.tpl.php 127行为:'&dbpw='+escape($('# ...

  8. phpcms v9模板制作教程(转载)

    第一节 1.首先下载phpcms v9的集成安装包并安装,这里就不详细说明了. 2.本地调试建议大家使用APMserver,或者wampserver等,可以到PHPCMS吧官方网站首页链接下载.安装好 ...

  9. phpcms v9模板制作教程

    phpcms v9模板制作教程(转载) 第一节 1.首先下载phpcms v9的集成安装包并安装,这里就不详细说明了. 2.本地调试建议大家使用APMserver,或者wampserver等,可以到P ...

随机推荐

  1. tengine + lua 实现流量拷贝

    环境搭建参考地址:http://www.cnblogs.com/cp-miao/p/7505910.html cp.lua local res1, res2, action action = ngx. ...

  2. 最佳eclipse字体推荐(个人觉得)

    首先大家能够看看这里面推荐的最佳十款字体.http://www.iteye.com/news/11102-10-great-programming-font 可是经过測试发现,排名第一的字体在ecli ...

  3. Zabbix的SNMPTrap监控配置

    SNMPTrap监控主要用于设备发生故障时的主动通知的监控.以下简单记录下Zabbix的SNMPTrap的配置方法. 一.SNMPTrap监控的处理流程说明 1.监控对象发送SNMPTrap信息到sn ...

  4. mongodb聚合(转)

    聚合 是泛指各种可以处理批量记录并返回计算结果的操作.MongoDB提供了丰富的聚合操作,用于对数据集执行计算操作.在 mongod 实例上执行聚合操作可以大大简化应用的代码,并降低对资源的消耗. 聚 ...

  5. 一起來玩鳥 Starling Framework 簡介

    開場 Starling Framework是一套Flash 2D遊戲開發"工具",是使用Flash最新的Stage3D API建構出來的一套Framework.最大優點在於使用GP ...

  6. MongoDB集群设置集合分片生效及查看集合分片情况

    #连接mongos /opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongo  127.0.0.1:27017   #使用admin数据库 use admin ...

  7. C++11 Lambda表达式简单解析

    C++11 新增了非常多特性,lambda 表达式是当中之中的一个.假设你想了解的 C++11 完整特性, 建议去http://www.open-std.org/看看新标准! 非常多语言都提供了 la ...

  8. Java基于注解和反射导入导出Excel

    代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...

  9. 调用腾讯QQ启动

    http://wpa.qq.com/msgrd?v=3&uin=88888888&site=qq&menu=yes

  10. Mysql命令行备份与还原数据库操作实例

    无论是Windows还是Linux,都可以通过如下命令行形式备份Mysql数据库 备份命令: 在windows的DOS窗口命令行或linux的shell命令行,假设需要备份的数据库是advanced: ...