coreseek在windows环境下安装和使用 不指定

jed , 2016-10-22 20:58 , 服务器技术 , 评论(0) , 阅读(33627) , Via 本站原创 | |
  先写个结论,sphinx本身是可以支持中文搜索的,只是不支持中文分词,需要安装中文分词插件,coreseek就是一个打包了mmseg中文分词插件和sphinx源码的安装包。
  
  概念讲解
  
  Sphinx全文搜索引擎
  
  一般用作大数据量的搜索支持
  
  Sphinx特性
  
  1:Sphinx支持高速建立索引(可达10MB/秒,而Lucene建立索引的速度是1.8MB/秒)
  
  2:高性能的搜索(在2--4GB的文本数据上,平均每次检索响应时间小于0.1秒)
  
  3:高扩展性(实测最高可对100GB的文本建立索引,单一索引可包含1亿条记录)
  
  4:提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法
  
  5:支持分布式搜索
  
  6:支持短语搜索
  
  7:可作为MySQL的存储引擎提供搜索服务
  
  8:支持布尔、短语、词语相似度等多种检索模式
  
  9:文档支持多个全文检索字段
  
  而我们在这里讲的是Coreseek。
  
  Coreseek是基于Sphinx开发的一款软件,对Sphinx做了一些改动,在中文方面支持得比Sphinx好
  
  如果是做中文的全文搜索引擎,现在用Coreseek.
  
  1、准备工作 (手工)
  
  数据库创建,导入数据
  
  下载coreseek文件(我的是coreseek-4.1-win32),解压到E:\coreseek(目录随便解压),解压目录如下:

      点击在新窗口中浏览此图片
  
  2、建立sphinx配置文件sphinx.conf (手工)
  
  在etc目录下建立sphinx.conf(名字随便)文件或者将csft_mysql.conf改名为sphinx.conf
  
  配置参数(后面会提到)
  
  3、命令生成索引(手工,执行命令)
  
  开始”——>“运行”——>输入cmd,打开命令行窗口——>执行 "e: 回车"——>执行 "cd coreseek",进入到 coreseek目录下
  
  执行 "set PATH=%CD%\bin;%PATH%"。设置path,目的是为了能够调用bin目录下的 cat.exe、iconv.exe 等
  
  bin\indexer -c etc\sphinx.conf  --all  在 coreseek\var\data 下发现,生成多个后缀不同文件。
  
  4、数据测试(命令行下不需要开启 searchd 服务)
  
  测试搜索中文。
  
  命令 为“ echo 搜索的词 | iconv -f gbk -t utf-8 | search -c etc\csft_mysql.conf --stdin | iconv -f utf-8 -t gbk ”
  
  搜索英文,出现乱码是正常的。命令为” bin\search -c etc\csft_mysql.conf 搜索词“
  
  5、将 searchd 安装成为一个服务。
  
  执行 "bin\searchd --install --config e:/coreseek/etc/sphinx.conf",安装成功后命令行窗口会提示" services searchd installed successfully"
  
  注意两点
  
  (1)、win7下命令行窗口需要以管理员身份运行,否则会出现”fatal openscmanager“错误而无法安装
  
  (2)、如果不把 searchd 安装成为服务,那每次使用 coreseek 全文搜索,都得在命令行窗口打开 searchd 服务且不可关闭或停止(命令行窗口不需要开启,使用api接口时需要)
  
  补充一点,无法正常安装,或安装后启动该服务时出现1067错误,很有可能是路径问题:一是需要注意数据源配置文件里全部使用绝对路径;二是上面的 install命令,也需要使用绝对路径,而且路径用 '/' ,不能是 '\'。
  
  以上是在服务器端安装配置Coreseek,下面就需要在客户端使用了
  
  6、php使用coreseek
  
  在web根目录下建立一个search目录(当然不在根目录也行,同样目录名也可以随取),复制E:\coreseek\api\ sphinxapi.php文件到search目录(sphinxapi.php这个是sphinx官方提供的api),开始php程序的编写。
  
  

  
  <?php
  
  include 'sphinxapi.php';  // 加载Sphinx API
  
  $sc = new SphinxClient(); // 实例化Api
  
  $sc->setServer('localhost', 9312); // 设置服务端,第一个参数sphinx服务器地址,第二个sphinx监听端口
  
  $res = $sc->query('sphinx', 'mysql');
  
  // 执行查询,第一个参数查询的关键字,
  
  // 第二个查询的索引名称,mysql索引名称(这个也是在配置文件sphinx.conf中定义的),
  
  //多个索引名称以,分开,也可以用*表示所有索引。
  
  print_r($res);
  
  ?>
  
  

  
  Matches中就是查询的结果了,但是仿佛不是我们想要的数据,比如titile,content字段的内容就没有查询出来,根据官方的说明是Sphinx并没有连接到MySQL去取数据,只是根据它自己的索引内容进行计算,因此如果想用Sphinx提供的API去取得我们想要的数据,还必须以查询的结果为依据,再次查询MySQL从而得到我们想要的数据。
  
  下一页的内容主要为coreseek常用命令以及sphinx.conf源配置和索引配置参数说明
  
  常用命令
  
  1、创建搜索服务
  
  bin\searchd --install --config e:/coreseek/etc/sphinx.conf servicename sphinx(--install仅在windows下有效)
  
  此处执行了两个命令:
  
  1)     install命令,安装searchd作为服务
  
  2)     config命令,配置sphinx.conf文件
  
  2、启动搜索服务
  
  bin/searchd -c etc/sphinx.conf
  
  3、停止搜索服务
  
  bin/searchd -c etc/sphinx.conf --stop
  
  4、强制关闭searchd服务
  
  killall -9 searchd
  
  5、建立索引
  
  bin/indexer -c etc/sphinx.conf --all
  
  6、更新索引某一索引(更新完成后需要重启searchd服务)
  
  bin/indexer -c etc/sphinx.conf xxxx   (xxxx为需要更新的索引名)
  
  在searchd服务运行的时候,更新索引(更新完成后不需要重启searchd服务)
  
  bin/indexer -c etc/sphinx.conf  --rotate xxxx   (xxxx为需要更新的索引名)
  
  7.关键字检索
  
  bin/search -c etc/sphinx.conf 关键词
  
  sphinx配置文件讲解
  
  source:数据源,数据是从什么地方来的。
  
  index:索引,当有数据源之后,从数据源处构建索引。索引实际上就是相当于一个字典检索。有了整本字典内容以后,才会有字典检索。
  
  searchd:提供搜索查询服务。它一般是以deamon的形式运行在后台的。
  
  indexer:构建索引的服务。当要重新构建索引的时候,就是调用indexer这个命令。
  
  attr:属性,属性是存在索引中的,它不进行全文索引,但是可以用于过滤和排序。
  
  配置文件
      
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]