Ubuntu下CoreSeek搜索系统建立指南…

来源:互联网 发布:凤凰卫视网络电视直播 编辑:程序博客网 时间:2024/06/07 18:31

第一步:安装
  安装coreseek请参考:BSDLinuxWindows系统安装测试说明文档
  安装后,请确保安装测试说明文档中的各项测试都可以通过,以便coreseek做好准备,为你服务!

 


第二步:配置:
  在BSD/Linux安装包的testpack/etc目录下,放置了演示的配置文件;
  在Windows安装包的etc目录下,也放置了演示的配置文件;
  如果是mysql数据库,可以将csft_mysql.conf拷贝为自己的配置文件,然后进行修改!其他数据库可以参考python数据源;
  要查看配置的细节,可以访问Coreseek/Sphinx(0.9)中文手册了解详情和具体的配置参数。
  配置文件的核心,为sourceindex配置,两者是成对出现的;如果需要设置针对多种情况或者多个数据表的索引,则可针对每一个编写对应的sourceindex配置;
  source表示从何处取得原始数据,也就是数据源;index表示取得数据后如何索引;
  source配置中,请确保可以使用给出的数据库服务器地址、用户、密码连接到对应的数据库,执行获取数据的SQL语句可以得到数据;否则coreseek无法得到数据,也就无法提供服务了。
  一般情况下,sql_query给出读取数据的SQL语句,第一列为自增的ID字段,然后可以包括字符串字段,整数数值字段;整数数值字段需要在后面使用sql_attr_uint明确标注,有多个则分别标注即可。 
  index配置中,需要注意修改path参数,确保不与其他的搜索服务发生冲突;最后的search的配置中,也要修改对应的路径参数和端口参数,以防止冲突发生;

 

 

第三步:测试
  首先,索引:使用bin目录下的indexer,执行:indexer -c 配置文件的路径 index名称

/usr/local/coreseek/bin/indexer -c etc/csft.conf --all    ##--all表示全部索引

##Windows下面为bin\indexer -c etc\csft.conf --all

##以下为正常索引全部数据时的提示信息:部分数据信息根据实际数据情况变化

    Coreseek Fulltext 3.2 Sphinx 0.9.9-release (r2117)]

    Copyright (c) 2007-2010,

    Beijing Choice Software Technologies Inc (http://www.coreseek.com)

 

     using config file 'etc/csft.conf'...

    indexing index '索引名称'...

    collected docs, 0.0 MB

    sorted 0.0 Mhits, 100.0% done

    total docs, 7585 bytes

    total 0.075 sec, 101043 bytes/sec, 39.96 docs/sec

    total reads, 0.000 sec, 5.6 kb/call avg, 0.0 msec/call avg

    total writes, 0.000 sec, 3.9 kb/call avg, 0.0 msec/call avg

 

如果出现以上对应的提示,则表示配置正确,可以正常索引;

 

 

 随后,启动搜索:使用bin目录下的searchd,执行:searchd -c 配置文件的路径 --console

 

/usr/local/coreseek/bin/searchd -c etc/csft.conf --console

##Windows下面为bin\searchd -c etc\csft.conf --console

##以下为正常开启搜索服务时的提示信息:其中的port可以在配置文件中修改

    Coreseek Fulltext 3.2 Sphinx 0.9.9-release (r2117)]

    Copyright (c) 2007-2010,

    Beijing Choice Software Technologies Inc (http://www.coreseek.com)

 

    using config file 'etc/csft.conf'...

    listening on all interfaces, port=9312

 

  如要继续测试搜索功能,请不要停止searchd,否则其他程序将无法连接到搜索服务端
  BSD/Linux环境下,测试成功后:
    如要后台运行服务,则使用:searchd -c 配置文件的路径,将searchd作为后台服务运行;
    如果要停止后台服务,则使用:searchd -c 配置文件的路径 --stop
    如果要更新后台服务的索引,则使用:indexer -c 配置文件的路径 index名称
  然后,可以参考安装测试说明文档使用bin目录下的search进行测试,检查搜索是否可以正常进行;

  如果要将搜索结果应用到自己的程序之中,请使用api目录下对应的api接口测试。PHP接口的测试如下:

//注意文件的编码格式需要保存为为UTF-8格式

require "sphinxapi.php" );

$cl new SphinxClient ();

$cl->SetServer '127.0.0.1', 9312);

//以下设置用于返回数组形式的结果

$cl->SetArrayResult true );

 

 

//取从头开始的前20条数据,0,20类似SQl语句的LIMIT 0,20

$cl->SetLimits(0,20);

 

//在做索引时,没有进行 sql_attr_类型 设置的字段,可以作为搜索字符串,进行全文搜索

$res $cl->Query '搜索字符串', "*" );    //"*"表示在所有索引里面同时搜索,"索引名称(例如test或者test,test2"则表示搜索指定的

 

//如果需要搜索指定全文字段的内容,可以使用扩展匹配模式

//$cl->SetMatchMode(SPH_MATCH_EXTENDED);

//$res=cl->Query( '@title (测试)' "*");

//$res=cl->Query( '@title (测试@content ('网络')' "*");

 

 

echo '

';
print_r($res['matches']);
print_r($res);
print_r($cl->GetLastError());
print_r($cl->GetLastWarning());
echo '
';

 


  返回结果之中(可见本页面最后的搜索结果示例),将包含matchword部分,match部分表示搜索到的结果,word部分表示搜索字符串的切分结果,total表示搜索到的结果总数;

  如果total0,可以print_r($cl)查看搜索服务器是否返回了错误提示信息,或者检查搜索字符串是否真的可以匹配信息。

  match之中,包含了获取到的数据的ID信息,以及所包含的整数字段的属性信息,根据ID信息,可以从数据库之中,取到对应的原始数据的信息,以供页面显示或者其他程序使用; 

MySQL读取示例:

 

SELECT FROM 数据表 WHERE ID IN(id1,id2,id3...,idn) ORDER BY FIND_IN_SET(ID,"id1,id2,id3...,idn")


  具体的搜索API,还包括排序、过滤等,可以访问Coreseek/Sphinx(0.9)中文手册了解API详情和具体的使用方式。 

  然后,你就可以在你的其他用用之中,包含以上的代码,并根据自己的需要,将用户或者其他代码传递的参数应用到搜索上面来,并根据返回的结果获取对应的数据进行显示或者处理! 

原创粉丝点击