zoukankan      html  css  js  c++  java
  • 安装sphinx和coreseek

    sphinx简介

    Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。

    Sphinx的特性如下:

    a)  高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);

    b)  高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);

    c)  可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可 处理100 M 文档);

    d)  提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;

    e)  支持分布式搜索;

    f)  支持短语搜索

    g)  提供文档摘要生成

    h)  可作为MySQL的存储引擎提供搜索服务;

    i)  支持布尔、短语、词语相似度等多种检索模式;

    j)  文档支持多个全文检索字段(最大不超过32个);

    k)  文档支持多个额外的属性信息(例如:分组信息,时间戳等);

    l)  支持断词;

    虽然mysql的MYISAM提供全文索引,但是性能却不敢让人恭维,另外数据库毕竟不是很善于做这样的事情,我们需要把这些活让给更适合的程序去做,减少数据库的压力。因此采用Sphinx来做mysql的全文索引工具是一个很好的选择。

    Sphinx安装

    wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
    
    tar xzvf sphinx-0.9.9.tar.gz
    
    cd sphinx-0.9.9
    
    ./configure --prefix=/usr/local/sphinx/   --with-mysql  --enable-id64
    
    make
    
    make install
    

    Sphinx配置

    sphinx配置文件在安装目录的etc下 例如安装目录在/usr/local/sphinx

    那么默认的配置文件就在/usr/local/sphinx/etc/sphinx.conf

    使用 cp ./sphinx.conf.dist  sphinx.conf 创建配置文件

    sphinx配置文件的结构

    Source 源名称1{     
    #添加数据源,这里会设置一些连接数据库的参数比如数据库的IP、用户名、密码等
    #设置sql_query、设置sql_query_pre、设置sql_query_range等后面会结合例子做详细介绍
    
        #定义数据库类型
    
        type                 = mysql
    
               #定义数据库的IP或者计算机名
    
        sql_host             = localhost
    
               #定义连接数据库的帐号
    
        sql_user             = root
    
               #定义链接数据库的密码
    
        sql_pass             = test123
    
               #定义数据库名称
    
        sql_db               = test
    
               #定义连接数据库后取数据之前执行的SQL语句
    
        sql_query_pre        = SET NAMES utf8
    
        sql_query_pre        = SET SESSION query_cache_type=OFF
    
      #定义取数据的SQL,第一列ID列必须为唯一的正整数值
    
      sql_query            = select content from post where id=$id
    
    }
    
    Index 索引名称1{
    
         Source=源名称1
    
      #设置全文索引
    
    }
    
    Indexer{
          #定义生成索引过程使用索引的限制    
         mem_limit        = 512M
    
    }
    
    Searchd{  
    
    #设置Searchd守护进程本身的一些参数
    
    
    }
    
    
    

    Coreseek介绍

    Coreseek是现在用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg ,是基于sphinx的基础上开发的。

    安装mmseg

    tar xzvf coreseek-3.2.14.tar.gz
    
    cd cd mmseg-3.2.14
    
    ./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决
    
    ./configure --prefix=/usr/local/mmseg
    
    make && make install
    

     安装coreseek

    cd csft-3.2.14
    
    ./configure --prefix=/usr/local/coreseek  
    --with-mmseg
    --with-mmseg-includes=/usr/local/mmseg/include/mmseg/
    --with-mmseg-libs=/usr/local/mmseg/lib/ --with-mysql=/usr/local/mysql make && make install

    配置coreseek

    配置coreseek和配置sphinx类似

    #以下部分为中文分词核心配置

     #stopwords        = /path/to/stowords.txt的位置
        charset_dictpath        = /usr/local/mmseg3/etc/
        charset_type        = zh_cn.utf-8
        #charset_table                    = .................... #需将原有的该配置注释掉
        ngram_len                    = 0
    


    #以上部分为中文分词核心配置

    配置介绍

    中文分词核心配置说明:
    charset_dictpath=/usr/local/mmseg3/etc/
    必须设置,表示词典文件的目录,该目录下必须有uni.lib词典文件存在;
    uni.lib词典文件的制作,请参考:mmseg词典的构造;特别注意,更换或者修改词典后,需要重新索引数据并重启searchd才能生效。
    因为BSD/linux默认安装在/usr/local/mmseg3/etc下面,则使用/usr/local/mmseg3/etc/即可;
    如果是在Windows系统下,则为词典所在的实际路径,结尾必须使用/,例如:F:coreseek-3.2.13-win32etc/

    测试时,如果出现Unigram dictionary load Error或者Segmentation fault,一般为词典路径设置不正确。

    charset_type=zh_cn.utf-8

    必须设置,表示启用中文分词功能;否则中文分词功能无效,使用sphinx的其他处理模式。

    启用中文分词功能后,需要source数据源之中,读取的数据编码字符集为UTF-8,否则无法正确处理;

    如果是xml,则正确输出为UTF-8编码格式即可;

    如果是MySQL,则设置读取数据输出字符集为UTF-8即可:

    MySQL4.1起可以通过SET NAMES UTF8设定输出字符集为UTF-8,即使原始数据为GBK也可;

    MySQL4.1以下版本,请直接联系我们解决GBK或者Latin1输出为UTF-8问题;

    #stopwords=/path/to/stowords.txt的位置

    可选设置,表示停止词文件,该文件中的词汇(也可以为单字)不参与搜索;文件格式为普通UTF-8文本文件,每行一个;
    #charset_table=......
    ngram_len=0
    必须设置,表示取消原有的一元字符切分模式,不使其对中文分词产生干扰;
    charset_table的配置需要注释掉!

    ngram_len的配置需要设置为0!

  • 相关阅读:
    wait(),notify(),notifyAll()
    AsyncTask
    锻炼记忆力
    apache URL重写 标志表 以及 错误解决方法
    php如何判断字符串是否是字母和数字的组合
    linux 下screen 使用
    MongoDB运行状态、性能监控,分析
    批量 汉字 转 拼音方法
    mysql 数据库备份
    LINUX下 一句话添加用户并设置ROOT权限
  • 原文地址:https://www.cnblogs.com/tl542475736/p/4083862.html
Copyright © 2011-2022 走看看