今天研究分词搜索,做下笔记,本人在windows下配置
从Coreseek官方网站下载
http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14-win32.zip
解压coreseek-3.2.14-win32.zip到coreseek-3.2.14-win32目录,重命名为sphinx 随意。
配置可参照官方文档
http://www.coreseek.cn/products-install/install_on_windows/
只配置mysql分词搜索
假设sphinx目录在D盘
首先配置 csft_mysql.conf
配置正确的账号密码
测试数据
D:sphinx/var/test/documents.sql
ctrl+r -> cmd 打开命令窗口
>D:
D:>cd \sphinx
D:sphinx>SET PATH=%CD%\bin;%PATH%
创建索引
全部索引
D:sphinx>bin\indexer –c etc\csft_mysql.conf --all
个别索引
D:sphinx>bin\indexer –c etc\csft_mysql.conf {索引名称}
启动搜索服务
D:sphinx>bin\searchd –c etc\csft_mysql.conf --console
停止服务 ctrl+c
测试搜索
bin\search –c etc\csft_mysql.conf –a {关键字1} {关键字2}
##coreseek-win32最新版本(2010年11月14日更新)内置了iconv命令,可以使用如下中文搜索指令进行测试:
echo 网络搜索 | iconv -f gbk -t utf-8 | search -c etc\csft.conf --stdin | iconv -f utf-8 -t gbk
-----------------------------------------------------------------------------------------------------
1、将api目录下的sphinxapi.php 文件拷贝到PHP网站的目录下,这里我把它放在根目录下。
2、在根目录下有个test_coreseek.php文件,代码如下:
<?php
//注意文件的编码格式需要保存为为UTF-8格式
require ( "sphinxapi.php" );
$cl = new SphinxClient ();
$cl->SetServer ( '127.0.0.1', 9312);
$cl->SetConnectTimeout ( 3 );
$cl->SetArrayResult ( true ); //以下设置用于返回数组形式的结果
$cl->SetMatchMode ( SPH_MATCH_ANY);
//ID的过滤
//$cl->SetIDRange(3,4);
//sql_attr_uint等类型的属性字段,需要使用setFilter过滤,类似SQL的WHERE group_id=2
//$cl->setFilter('group_id',array(2));
//sql_attr_uint等类型的属性字段,也可以设置过滤范围,类似SQL的WHERE group_id2>=6 AND group_id2<=8
//$cl->SetFilterRange('group_id2',6,8); */
//取从头开始的前20条数据,0,20类似SQl语句的LIMIT 0,20 //$cl->SetLimits(0,20);
//在做索引时,没有进行 sql_attr_类型 设置的字段,可以作为“document”,进行全文搜索
//$res = $cl->Query ( ' document ', "*" ); //"*"表示在所有索引里面同时搜索,"索引名称"则表示搜索指定的
$res = $cl->Query ( 'Google', "mysql" );
print_r($res);
?>
3、运行test_coreseek.php文件,查看搜索结果: 从结果中看,总共搜索出两条记录,全部存储在一个数组中。
Array (
[0] => Array(
[id] => 1
[weight] => 1
[attrs] => Array (
[group_id] => 1
[date_added] => 1290775649
)
)
[1] => Array(
[id] => 2
[weight] => 1
[attrs] => Array(
[group_id] => 1
[date_added] => 1290775649
)
)
)
Array (
[error] =>【本次查询的错误信息】
[warning] =>
[status] => 0
[fields] => Array (
[0] => title
[1] => content
)
[attrs] => Array (
[group_id] => 1
[date_added] => 2
)
【匹配到的文档信息】
[matches] => Array (
[0] => Array
(
[id] => 1 【文档ID】
[weight] => 1
[attrs] => Array
(
[group_id] => 2
[date_added] => 1270131607
)
)
[1] => Array
(
[id] => 3
[weight] => 1
[attrs] => Array
(
[group_id] => 3
[date_added] => 1270094460
)
)
)
[total] => 2 【本次查询返回的结果数目,例如翻页等使用】
[total_found] => 2 【整个系统包含的结果数目】
[time] => 0.001 【查询使用的时间】
[words] => Array 【分词结果】 (
[document] => Array (
[docs] => 2 【该词汇匹配到的文档数目】
[hits] => 6 【该词汇出现的次数】
)
) )
从Coreseek官方网站下载
http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14-win32.zip
解压coreseek-3.2.14-win32.zip到coreseek-3.2.14-win32目录,重命名为sphinx 随意。
配置可参照官方文档
http://www.coreseek.cn/products-install/install_on_windows/
只配置mysql分词搜索
假设sphinx目录在D盘
首先配置 csft_mysql.conf
配置正确的账号密码
测试数据
D:sphinx/var/test/documents.sql
ctrl+r -> cmd 打开命令窗口
>D:
D:>cd \sphinx
D:sphinx>SET PATH=%CD%\bin;%PATH%
创建索引
全部索引
D:sphinx>bin\indexer –c etc\csft_mysql.conf --all
个别索引
D:sphinx>bin\indexer –c etc\csft_mysql.conf {索引名称}
启动搜索服务
D:sphinx>bin\searchd –c etc\csft_mysql.conf --console
停止服务 ctrl+c
测试搜索
bin\search –c etc\csft_mysql.conf –a {关键字1} {关键字2}
##coreseek-win32最新版本(2010年11月14日更新)内置了iconv命令,可以使用如下中文搜索指令进行测试:
echo 网络搜索 | iconv -f gbk -t utf-8 | search -c etc\csft.conf --stdin | iconv -f utf-8 -t gbk
-----------------------------------------------------------------------------------------------------
1、将api目录下的sphinxapi.php 文件拷贝到PHP网站的目录下,这里我把它放在根目录下。
2、在根目录下有个test_coreseek.php文件,代码如下:
<?php
//注意文件的编码格式需要保存为为UTF-8格式
require ( "sphinxapi.php" );
$cl = new SphinxClient ();
$cl->SetServer ( '127.0.0.1', 9312);
$cl->SetConnectTimeout ( 3 );
$cl->SetArrayResult ( true ); //以下设置用于返回数组形式的结果
$cl->SetMatchMode ( SPH_MATCH_ANY);
//ID的过滤
//$cl->SetIDRange(3,4);
//sql_attr_uint等类型的属性字段,需要使用setFilter过滤,类似SQL的WHERE group_id=2
//$cl->setFilter('group_id',array(2));
//sql_attr_uint等类型的属性字段,也可以设置过滤范围,类似SQL的WHERE group_id2>=6 AND group_id2<=8
//$cl->SetFilterRange('group_id2',6,8); */
//取从头开始的前20条数据,0,20类似SQl语句的LIMIT 0,20 //$cl->SetLimits(0,20);
//在做索引时,没有进行 sql_attr_类型 设置的字段,可以作为“document”,进行全文搜索
//$res = $cl->Query ( ' document ', "*" ); //"*"表示在所有索引里面同时搜索,"索引名称"则表示搜索指定的
$res = $cl->Query ( 'Google', "mysql" );
print_r($res);
?>
3、运行test_coreseek.php文件,查看搜索结果: 从结果中看,总共搜索出两条记录,全部存储在一个数组中。
Array (
[0] => Array(
[id] => 1
[weight] => 1
[attrs] => Array (
[group_id] => 1
[date_added] => 1290775649
)
)
[1] => Array(
[id] => 2
[weight] => 1
[attrs] => Array(
[group_id] => 1
[date_added] => 1290775649
)
)
)
Array (
[error] =>【本次查询的错误信息】
[warning] =>
[status] => 0
[fields] => Array (
[0] => title
[1] => content
)
[attrs] => Array (
[group_id] => 1
[date_added] => 2
)
【匹配到的文档信息】
[matches] => Array (
[0] => Array
(
[id] => 1 【文档ID】
[weight] => 1
[attrs] => Array
(
[group_id] => 2
[date_added] => 1270131607
)
)
[1] => Array
(
[id] => 3
[weight] => 1
[attrs] => Array
(
[group_id] => 3
[date_added] => 1270094460
)
)
)
[total] => 2 【本次查询返回的结果数目,例如翻页等使用】
[total_found] => 2 【整个系统包含的结果数目】
[time] => 0.001 【查询使用的时间】
[words] => Array 【分词结果】 (
[document] => Array (
[docs] => 2 【该词汇匹配到的文档数目】
[hits] => 6 【该词汇出现的次数】
)
) )