打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
window下安装sphinx实例

今天研究了一下window下安装sphinx,终于是把sphinx服务安装了(只限CMD端),至于如何在用PHP查询还在研究中,就说说一下如何在window下安装sphinx服务端大概流程:
1.首先查看服务器mysql 的版本,找对应的数据库版本对应SphinxSE下载,下载两个文件:mysql-5.0.45-sphinxse-0.9.8-win32.zip和sphinx-0.9.8.1-win32.zip,下载地址:http://sphinxsearch.com/downloads/archive/,查看服务器mysql版本可能用status命令查看:如图



2.如果服务器处于启状态,可以先关闭mysql服务器
3.解压mysql-5.0.45-sphinxse-0.9.8-win32.zip,将里面bin与share目录覆盖掉你的mysql安装目录下的相应目录 ,解压sphinx-0.9.8.1-win32.zip压缩包文件到d:websphinx 因为wamp服务器所有文件都放在web下,这里为了管理方便就统一放在web下。
4.下面就弄sphinx配置了,在sphinx目录下sphinx-min.conf.in拷贝一份重命名后缀名为.conf 的文件,这里我命名为sphinx-doc.conf
 

复制内容到剪贴板
  1. # Minimal Sphinx configuration sample (clean, simple, functional)  
  2. #  
  3. # type----------------------------------------数据库类型,目前支持 mysql 与 pgsql  
  4. # strip_html--------------------------------是否去掉html 标签  
  5. # sql_host----------------------------------数据库主机地址  
  6. # sql_user----------------------------------数据库用户名  
  7. # sql_pass----------------------------------数据库密码  
  8. # sql_db-------------------------------------数据库名称  
  9. # sql_port-----------------------------------数据库采用的端口  
  10. # sql_query_pre--------------------------执行sql前要设置的字符集,用utf8必须SET NAMES utf8  
  11. # sql_query---------------------------------全文检索要显示的内容,在这里尽可能不使用where或 group by,将 where 与 groupby 的内容交给 sphinx,由 sphinx 进行条件过滤与 groupby 效率会更高  
  12. # 注意: select 出来的字段必须至少包括一个唯一主键 (ARTICLESID) 以及要全文检索的字段,你计划原本在 where 中要用到的字段也要 select 出来  
  13. # 这里不用使用orderby  
  14. # sql_attr_ 开头的表示一些属性字段,你原计划要用在 where, orderby, groupby 中的字段要在这里定义(# 为自己添加的注释内容)  
  15.   
  16. #source 数据源名:  
  17.   
  18. source documents  
  19. {  
  20. type             = mysql  
  21. sql_host     = localhost  
  22. sql_user      = root  
  23. sql_pass     =   
  24. sql_db         = DB_9streets  
  25. sql_port       = 3306 # optional, default is 3306  
  26.   
  27. sql_query_pre     = SET NAMES utf8  
  28. sql_query     =   
  29.    SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content   
  30.    FROM documents  
  31.   
  32. sql_attr_uint    = group_id  
  33. sql_attr_timestamp   = date_added  
  34.   
  35. sql_query_info    = SELECT * FROM documents WHERE id=$id  
  36. }  
  37.   
  38.   
  39. index documents  
  40. {  
  41. source      = documents  
  42.   
  43. #path   索引记录存放目录,如 d:/sphinx/data/cgfinal ,实际存放时会存放在 d:/sphinx/data 目录,然后创建多个 cgfinal 名称,不同扩展名的索引文件。  
  44. path          = d:/web/sphinx/doc  
  45. docinfo      = extern  
  46. enable_star     = 1  
  47.   
  48. min_word_len     = 3  
  49. min_prefix_len     = 0  
  50. min_infix_len     = 3  
  51. charset_type    = sbcs  
  52.   
  53. # 其他的配置如 min_word_len, charset_type, charset_table, ngrams_chars, ngram_len 这些则是支持中文检索需要设置的内容。  
  54. # 如果检索的不是中文,则 charset_table, ngrams_chars, min_word_len 就要设置不同的内容,具体官方网站的论坛中有很多,大家可以去搜索看看。  
  55. }  
  56.   
  57. # mem_limit 索引使用内存最大限制,根据机器情况而定,默认是32M,太小的会影响索引的性能。  
  58. indexer  
  59. {  
  60. mem_limit     = 32M  
  61. }  
  62.   
  63. # 搜索的守护进程配置  
  64. # 在进行全文检索过程中,searchd要先开启,mysql在全文检索时才能连接到sphinx,由sphinx进行全文检索,再将结果返回给mysql  
  65. # address 侦听请求的地址,不设置则侦听所有地址  
  66. # port 侦听端口  
  67. searchd  
  68. {  
  69. port     = 3312  
  70. log       =d:/web/sphinx/logs/searched_doc.log  
  71. query_log     = d:/web/sphinx/logs/query_doc.log  
  72. read_timeout    = 5  
  73. max_children    = 30  
  74. pid_file     = d:/web/sphinx/logs/searched-doc.pid  
  75. max_matches     = 1000  
  76. seamless_rotate    = 0  
  77. preopen_indexes    = 0  
  78. unlink_old     = 1  
  79. }  

注意哦:配置要根据具体的服务器环境去设置,然后再copy一份到sphinxin目录下,命名和刚才重命名文件一样为sphinx-doc.conf
5.导入sphinx包下example.sql,自带sql文件数据库为test,或修改自带sql数据库名,也可以根据自身数据库导入:

复制内容到剪贴板
  1. CREATE TABLE `documents` (  
  2. `id` int(11) NOT NULL auto_increment,  
  3. `group_id` int(11) NOT NULL,  
  4. `group_id2` int(11) NOT NULL,  
  5. `date_added` datetime NOT NULL,  
  6. `title` varchar(255) NOT NULL,  
  7. `content` text NOT NULL,  
  8. PRIMARY KEY (`id`)  
  9. ) ENGINE=InnoDB AUTO_INCREMENT=5;  
  10.   
  11. INSERT INTO `documents` VALUES ('1''1''5''2008-09-13 21:37:47''test one''this is my test document number one. also checking search within phrases.');  
  12. INSERT INTO `documents` VALUES ('2''1''6''2008-09-13 21:37:47''test two''this is my test document number two');  
  13. INSERT INTO `documents` VALUES ('3''2''7''2008-09-13 21:37:47''another doc''this is another group');  
  14. INSERT INTO `documents` VALUES ('4''2''8''2008-09-13 21:37:47''doc number four''this is to test groups');  

6.在 cmd 模式下(不了解CMD下操作,可以进入相关了解了解),在sphinx/bin目录下:

复制内容到剪贴板
  1. indexer.exe --config d:/web/sphinx/bin/sphinx-doc.conf documents  


7.运行检索守护进程 searchd.exe(注:如要把phinx安装成系统服务,在后台运行,可用searchd.exe --config d:/web/sphinx/bin/sphinx-doc.conf  --install):

复制内容到剪贴板
  1. searchd.exe --config d:/web/sphinx/bin/sphinx-doc.conf  


8. 查找关键词search.exe this is m

复制内容到剪贴板
  1. search.exe -c sphinx-doc.conf this is m  



运行了出现警告,(暂未找到原因,先忽略),说明我们的 Sphinx 已经正常运行了!
ps:PHP乍么连接起来还在研究中?找不到在window下对应的sphinx模块,有好方案的同学们,欢迎交流

---------------------------------------------window下安装sphinx实例华丽分割线-----------------------------------------------------
下面是PHP调用方法实例:
1.把sphinx/api目录拷贝到服务器某个项目中,在项目api文件夹里面建一个index.php的文件 ,写入以下代码:

复制内容到剪贴板

  1. require ( "sphinxapi.php" );  
  2. $host = "dwz.com";  
  3. $port = 3312;  
  4. $sc = new SphinxClient(); // 实例化Api  
  5. $sc->setServer('dwz.com', 3312); // 设置服务端,第一个参数sphinx服务器地址,第二个sphinx监听端口  
  6. $res = $sc->query('test''documents'); // 执行查询,第一个参数查询的关键字,第二个查询的索引名  
  7. $ids = join(',',array_keys($res['matches']));  
  8. print_r($ids); // 获取主键  
  9. ?>  

运行结果下:

复制内容到剪贴板
  1. 1,2,4  

  这里说明PHP调用sphinx成功了,剩下的就是php调用sphinx具体用法的深入研究了

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Sphinx速成指南
sphinx全文检索之PHP使用教程
sphinx实现增量索引 分布式索引几个例子
freebsd下安装sphinx及其配置文件和分布式检索
sphinx 配置文件全解析
Yii框架中sphinx索引配置方法解析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服