先写个结论,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:属性,属性是存在索引中的,它不进行全文索引,但是可以用于过滤和排序。
配置文件
下载文件 (已下载 625 次)
概念讲解
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:属性,属性是存在索引中的,它不进行全文索引,但是可以用于过滤和排序。
配置文件
