zoukankan      html  css  js  c++  java
  • ubuntu上 安装 基于sphinx 的 coreseek 全文搜索

    原生sphinx不支持中文, sphinx-for-chinese匹配中文时也不返回结果 ,真纠结,  最好试了 coreseek,这个能正确返回结果了, 所以记录一下

    http://www.coreseek.cn/products-install/step_by_step/  php调用

    --------------------以下是安装步骤

    ##下载coreseek:coreseek 3.2.14:点击下载、coreseek 4.0.1:点击下载、coreseek 4.1:点击下载
    $ wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
    $ 或者 http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.0.1-beta.tar.gz
    $ 或者 http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
    $ tar xzvf coreseek-3.2.14.tar.gz 或者 coreseek-4.0.1-beta.tar.gz 或者 coreseek-4.1-beta.tar.gz
    $ cd coreseek-3.2.14 或者 coreseek-4.0.1-beta 或者 coreseek-4.1-beta
    
    ##前提:需提前安装操作系统基础开发库及mysql依赖库以支持mysql数据源和xml数据源
    ##安装mmseg
    $ cd mmseg-3.2.14
    $ ./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决
    $ ./configure --prefix=/usr/local/mmseg3
    $ make && make install
    $ cd ..
    
    ##安装coreseek
    $ cd csft-3.2.14 或者 cd csft-4.0.1 或者 cd csft-4.1
    $ sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决
    $ ./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql    ##如果提示mysql问题,可以查看MySQL数据源安装说明
    $ make && make install
    $ cd ..
    
    ##测试mmseg分词,coreseek搜索(需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文)
    $ cd testpack
    $ cat var/test/test.xml    #此时应该正确显示中文
    $ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
    $ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all
    $ /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索



    $ /usr/local/coreseek/bin/searchd -c /usr/local/xxx/etc/csft.conf  #后台运行,指定的conf文件



    //php调用

    //api文件在 /usr/local/src/coreseek-4.1-beta/csft-4.1/api下 ,这是我的解压路径,可以把整个文件api目录copy到你的网站目录,这样就能调用

    <?php
    
    //注意文件的编码格式需要保存为为UTF-8格式
    require("sphinxapi.php"); 
    
    $cl = new SphinxClient();
    
    $cl->SetServer('127.0.0.1', 9312);
    //以下设置用于返回数组形式的结果
    $cl->SetArrayResult( true );
    
    /*
    //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_类型 设置的字段,可以作为“搜索字符串”,进行全文搜索
    //$res = $cl->Query ( '搜索字符串', "*" );    //"*"表示在所有索引里面同时搜索,"索引名称(例如test或者test,test2)"则表示搜索指定的
    
    //如果需要搜索指定全文字段的内容,可以使用扩展匹配模式:
    $cl->SetMatchMode(SPH_MATCH_EXTENDED);
    //$res=cl->Query( '@title (测试)' , "*");
    $res= $cl->Query( '@content (是)' , "*");
    
    
    echo '<pre>';
    print_r($res['matches']);
    print_r($res);
    print_r($cl->GetLastError());
    print_r($cl->GetLastWarning());
    echo '</pre>';
    
    ?>

    检查页面 ,  在返回的结果中有total_found,表示返回的数量

    [total_found] => 2
    ....


    完...




    PHP程序员 人在北京 如有需要,可以站内联系我!!!
  • 相关阅读:
    委托与事件参数的简单运用
    C#消息队列专题
    项目计划流程简易描述
    cookies 客户端历史记录篇
    朋友做的VS2005插件:等号两边值互换
    SSE2指令集系列之二
    SSSE3指令集
    SSE3指令集系列
    SSE特殊指令集系列之一
    SSE2指令集系列之一
  • 原文地址:https://www.cnblogs.com/flex_fly/p/3273235.html
Copyright © 2011-2022 走看看