标题:coreseek在windows环境下安装和使用 出处:沧海一粟 时间:Sat, 22 Oct 2016 20:58:27 +0000 作者:jed 地址:http://www.dzhope.com/post/1026/ 内容:   先写个结论,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(目录随便解压),解压目录如下: 点击在新窗口中浏览此图片 http://www.dzhope.com/attachment.php?fid=82      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程序的编写。            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:属性,属性是存在索引中的,它不进行全文索引,但是可以用于过滤和排序。      配置文件 点击这里下载文件 Generated by Bo-blog 2.1.1 Release