• Sphinx学习之sphinx的安装篇


    Sphinx学习之sphinx的安装篇

    一、  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安装

    Sphinx在mysql上的应用有两种方式:

    1. 采用API调用,如使用PHP、java等的API函数或方法查询。优点是可不必对mysql重新编译,服务端进程“低耦合”,且程序可灵活、方便的调用;缺点是如已有搜索程序的条件下,需修改部分程序。推荐程序员使用。
    2. 使用插件方式(sphinxSE)把sphinx编译成一个mysql插件并使用特定的sql语句进行检索。其特点是,在sql端方便组合,且能直接返回数据给客户端。不必二次查询,在程序上仅需要修改对应的sql,但这对使用框架开发的程序很不方便,比如使用了ORM。另外还需要对mysql进行重新编译,且需要mysql-5.1以上版本支持插件存储。

    这里的安装主要介绍的是第一种通过api调用的方式。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中文分词

    中文的全文检索和英文等latin系列不一样,后者是根据空格等特殊字符来断词,而中文是根据语义来分词。中文分词主要有2个插件

    1. Coreseek

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

    1. sfc(Sphinx-for-chinese)

    sfcsphinx-for-chinese是由网友happy兄提供的另外一个中文分词插件。其中文词典采用的是xdict

    本文主要介绍Coreseek的安装方法

    四、  Coreseek(支持中文检索的sphinx)安装

    1. 安装升级autoconf

    因为coreseek需要autoconf 2.64以上版本,因此需要升级autoconf,不然会报错从http://download.chinaunix.net/download.php?id=29328&ResourceID=648下载autoconf-2.64.tar.bz2,安装方法如下:

    tar -jxvf autoconf-2.64.tar.bz2

    cd autoconf-2.64

    ./configure

    make

    make install

    1. 下载coreseek

    新版本的coreseek将词典和sphinx源程序放在了一个包中,因此只需要下载coreseek包就可以了。

    1. 安装mmseg(coreseek所使用的词典)

    tar xzvf coreseek-3.2.14.tar.gz

    cd mmseg-3.2.14

    ./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决

    ./configure --prefix=/usr/local/mmseg3

    make && make install

    cd ..

    1. 安装coreseek(sphinx)

    cd csft-3.2.14

    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

    make && make install

    cd ..

    1. 测试mmseg分词和coreseek搜索

    备注:需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文,我的系统字符集为en_US.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 网络搜索

    此时正确的应该返回

    words:

    1. '网络': 1 documents, 1 hits

    2. '搜索': 2 documents, 5 hits

    1. 生成 mmseg词库及配置文件

    新版本的已经自动生成。

    五、  参考文章:

    Sphinx中文指南

    http://www.sphinxsearch.org/sphinx-tutorial

    Sphinx中文分词应用

    http://www.sphinxsearch.org/archives/82

    Sphinx 0.9.8参考手册

    CoreSeek BSD/Linux下的安装

    http://www.coreseek.cn/products/products-install/install_on_bsd_linux/

    转自http://blog.chinaunix.net/uid-20639775-id-3261834.html

  • 相关阅读:
    Working with WordprocessingML documents (Open XML SDK)
    How to Choose the Best Way to Pass Multiple Models in ASP.NET MVC
    Azure:Manage anonymous read access to containers and blobs
    Convert HTML to PDF with New Plugin
    location.replace() keeps the history under control
    On the nightmare that is JSON Dates. Plus, JSON.NET and ASP.NET Web API
    HTTP Modules versus ASP.NET MVC Action Filters
    解读ASP.NET 5 & MVC6系列(6):Middleware详解
    Content Negotiation in ASP.NET Web API
    Action Results in Web API 2
  • 原文地址:https://www.cnblogs.com/xd502djj/p/4097509.html
Copyright © 2020-2023  润新知