`

在ubuntu上安装全文搜索中文分词Coreseek/sphinx 及和Rails集成

阅读更多
Sphinx(狮身人面像) 想必大家都比较了解,就不作介绍了,不了解的童鞋可以自己Google。

原生Sphinx不支持中文,
所以这里重点介绍支持中文分词的 Coreseek。

注意:Coreseek 3.2 后,只有安装 Coreseek 就可以了,它对LibMMSeg和sphinx做了整合,不用再安装原生Sphinx。(3.2前是要安装原生Sphinx,还要装补丁,非常繁琐)

安装coreseek

下面以coreseek-3.2.14为例,它基于Sphinx 0.99(不用安装Sphinx 0.99)

详细官方手册:http://www.coreseek.cn/products-install/install_on_bsd_linux/

ubuntu-10.04 安装 coreseek安装需要预装的软件:
sudo apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev   libxml2-dev libexpat1-dev


#下载 coreseek-3.2.14,里面已经包含 mmseg
cd /tmp
wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
tar xzvf coreseek-3.2.14.tar.gz
cd coreseek-3.2.14
# 先安装mmseg
cd mmseg-3.2.14
./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/opt/mmseg  [color=red]#下面安装coreseek 需要此路径[/color]
sudo make && sudo make install

#安装coreseek
cd ..
cd csft-3.2.14
sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/opt/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/opt/mmseg/include/mmseg/ --with-mmseg-libs=/opt/mmseg/lib/ --with-mysql    ##如果提示mysql问题,可以查看MySQL数据源安装说明
sudo make && sudo make install
cd ..

#然后建立命令快捷方式,方便使用
sudo ln -s /opt/coreseek/bin/indexer   /usr/local/bin/indexer
sudo ln -s /opt/coreseek/bin/indextool  /usr/local/bin/indextool  
sudo ln -s /opt/coreseek/bin/search  /usr/local/bin/search  
sudo ln -s /opt/coreseek/bin/searchd  /usr/local/bin/searchd  
sudo ln -s /opt/coreseek/bin/spelldump /usr/local/bin/spelldump



集成到rails项目

这里用的是gem thinking-sphinx

如果没有新项目自己创建Rails项目,这里不做说明。
可以参考Railscasts: http://railscasts.com/episodes/120-thinking-sphinx?autoplay=true

安装 thinking-sphinx
官方手册:http://freelancing-god.github.com/ts/en/installing_thinking_sphinx.html

这里只说明下 rails 3.0

在Gemfile中加入
gem 'thinking-sphinx'


然后
bundle install



可以参考快速实现:http://freelancing-god.github.com/ts/en/quickstart.html

在model中定义索引
class Post < ActiveRecord::Base
  define_index do
    indexes :title, :body
    
    #声明使用实时索引  
    set_property :delta => true  #注意这句一定要加,否则添加了记录不会自动索引
  end
end


记得添加实时索引字段 delta
ruby script/generate migration add_delta_to_posts delta:boolean


class AddDeltaToPosts < ActiveRecord::Migration  
  def self.up
    add_column :posts, :delta,:boolean, :default => true, :null => false
  end

  def self.down
    remove_column :posts, :delta
  end
end  

rake db:migrate


在controller中加search代码,controler大家自己建啦。
class FullTextSearchController < ApplicationController

  def search
    per_page = params[:limit].to_i
    page = (params[:start].to_i / per_page) + 1
    total_count = ThinkingSphinx.count(params[:query], :classes => [Post], :page => page, :per_page => per_page)
    @results = ThinkingSphinx.search(params[:query], :classes => [Post], :page => page, :per_page => per_page)
    respond_to do |format|
      format.json { render(:json => {:total => total_count, :success => true,
                           :items => @results.map{ |i| {:id  => i.id, :title => i.title, :body => i.body} unless i.blank
? },
      }.to_json)}
    end
  end
end


#创建rails项目全文搜索数据目录
cd 你的rails目录
mkdir fulltext_search_data

#从安装包中复制字典到Rails项目
cp /tmp/coreseek-3.2.14/mmseg-3.2.14/data/*.* 你的rails目录/fulltext_search_data

#新建配置文件:
vi config/sphinx.yml

#内容如下:
test:
  bin_path: /opt/coreseek/bin
  mem_limit: 128M
  config_file: config/test.sphinx.conf
  charset_type: zh_cn.utf-8
  charset_dictpath: <%=::Rails.root.to_s + "/fulltext_search_data "%>
  pid_file: "/tmp/searchd.test.pid"
  ngram_len: 0
development:
  bin_path: /opt/coreseek/bin
  mem_limit: 128M
  config_file: config/development.sphinx.conf
  charset_type: zh_cn.utf-8
  charset_dictpath: <%=::Rails.root.to_s + "/fulltext_search_data "%>
  pid_file: "/tmp/searchd.development.pid"
  ngram_len: 0
production:
  bin_path: /opt/coreseek/bin
  mem_limit: 128M
  config_file: config/production.sphinx.conf
  charset_type: zh_cn.utf-8
  charset_dictpath: <%=::Rails.root.to_s + "/fulltext_search_data "%>
  pid_file: "/tmp/searchd.production.pid"
  ngram_len: 0

#建立配置文件
rake thinking_sphinx:configure

#建立索引
rake thinking_sphinx:index

#开启服务
rake thinking_sphinx:start

#现在可以先加些数据,在浏览器中访问你的controller测试搜索

#也可以用如下命令来测试全文搜索引擎
search '关键字' -c 你的Rsils项目/config/development.sphinx.conf



最后再补几点注意事项:
1.定义索引时 "set_property :delta => true", 没有这句新加的记录不会索引。
2.coreseek 安装包中的字典文件一定要复制到Rails项目数据目录,否则中文无法支持。


参考资料:

详见:https://github.com/freelancing-god/thinking-sphinx
官方手册:http://freelancing-god.github.com/ts/en/installing_thinking_sphinx.html
快速实现:http://freelancing-god.github.com/ts/en/quickstart.html


分享到:
评论
1 楼 helloqidi 2012-04-17  
谢谢博主分享

相关推荐

    CoreSeek/Sphinx中文手册

    综上所述,CoreSeek/Sphinx作为一个功能丰富、性能卓越的搜索引擎,它不仅适用于大数据环境下的全文搜索和数据挖掘,而且通过其API和SphinxQL为开发者提供了强大的搜索功能定制能力。无论是作为独立的搜索引擎,还是...

    sphinx 的安装及使用 windws centos coreseek

    在描述中提到了一个博文链接,虽然具体内容没有给出,但可以推测博主“sinykk”分享了他在安装和配置Sphinx以及与Coreseek集成过程中的经验。由于没有实际的博文内容,我将基于一般流程来解释Sphinx的安装和使用。 ...

    coreseek(sphinx + 中文分词)

    Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等...

    sphinx+coreseek安装配置

    Sphinx和CoreSeek是两种强大的全文搜索引擎技术,尤其在处理大量数据的检索和高效率搜索时表现卓越。它们常被用于网站、数据库和其他需要快速、精确搜索功能的应用中。本文将详细介绍如何在Linux环境中安装和配置...

    coreseek中日韩分词词库

    总结,Coreseek/sphinx的中日韩分词词库是构建高效多语言搜索引擎的关键组成部分,它们通过科学的构建方法和持续的维护更新,确保了在中文、日语和韩语环境下的搜索质量和性能。无论是开发多语言网站还是构建复杂的...

    centos 6.5安装coreseek,亲测ok

    在本文中,我们将深入探讨如何在CentOS 6.5操作系统上成功安装CoreSeek,一个基于Sphinx搜索引擎的全文检索引擎。CoreSeek以其高度可定制性、高效性能和丰富的功能特性,广泛应用于各类数据检索场景。 一、CoreSeek...

    coreseek SPHINX 使用说明及详细介绍

    Sphinx是由俄罗斯的Andrew Aksyonoff开发,而Coreseek是Sphinx在中国的一个分支,增加了对中文的支持和其他一些本地化改进。 ### 1. Coreseek介绍 Coreseek是一个搜索引擎解决方案,它结合了全文索引、数据库检索和...

    sphinx/coreseek权威手册中文版

    Coreseek在Sphinx的基础上增加了对中文的支持和优化,使得在海量文本数据中进行中文搜索变得高效且便捷。 - 特性包括:实时索引、布尔查询、短语查询、模糊查询、同义词扩展、排序、分页、权重计算等。此外,它还...

    sphinx mmseg coreseek 搜狗 词库

    首先,使用CoreSeek作为基础架构,它内置了Sphinx的全文搜索功能和MMSEG的中文分词能力。然后,引入搜狗词库以增强分词的准确性,尤其对于网络流行语和新词的识别。这样,用户输入的查询将通过MMSEG算法进行分词,...

    window 下sphinx 2.2.11安装 及coreseek3.1 安装包及安装说明 ,简单php调试

    在Windows环境下搭建Sphinx 2.2.11与CoreSeek 3.1搜索引擎系统是一项技术性较强的任务,尤其对于初次接触全文检索引擎的人来说。本文将详细介绍这两个组件的安装过程,以及如何进行简单的PHP集成与调试。 Sphinx是...

    php7的sphinx扩展,适用linux,mac

    在安装PHP7的Sphinx扩展时,如果需要处理中文数据,可能需要集成CoreSeek的源码。这样做的目的是为了确保Sphinx能够正确地分析和索引中文内容。 在Linux和Mac系统上安装PHP7的Sphinx扩展,通常涉及以下步骤: 1. ...

    coreseek4.1 编译安装和实时索引配置

    Coreseek是一款基于Sphinx搜索引擎的中文分词系统,它提供了强大的全文检索功能,广泛应用于各种数据索引和搜索场景。本文将详细介绍如何在Linux环境下编译安装Coreseek 4.1版本,并进行实时索引的配置。 首先,...

    站内全文搜索引擎 coreseek

    coreseek是在sphinx的基础上,增加了中文分词功能,换句话说,就是支持了中文。 Coreseek发布了3.2.14版本和4.1版本,其中的3.2.14版本是2010年发布的,它是基于Sphinx0.9.9搜索引擎的。而4.1版本是2011年发布的,...

    CoreSeek安装注意事项

    在进行CoreSeek搜索引擎的安装过程中,往往会遇到各种各样的问题,这些问题可能涉及到环境配置、依赖库安装、编译错误等。本文档根据实际安装经验,并结合网络上的参考资料,总结了一套完整的安装指南,旨在帮助用户...

    Windows下安装使用Sphinx

    ### Windows 下安装使用 Sphinx #### 一、Sphinx 概述 Sphinx 是一款由俄罗斯开发者 Andrew Aksyonoff ...通过以上步骤,你可以成功地在 Windows 环境下安装并使用 Sphinx,为你的应用程序提供强大的全文搜索功能。

    Coreseek在ubuntu系统上补丁

    然而,由于操作系统环境的不同,Coreseek在不同平台上可能存在编译和运行的问题,尤其是在非Windows系统如Ubuntu上。 本补丁包针对的就是在Ubuntu系统上编译Coreseek时可能出现的不兼容性问题。"sphinxexpr.cpp-...

    sphinx_coreseek使用手册

    而Coreseek则是在Sphinx基础上针对中文进行了优化的全文检索引擎,它同样遵循GPLv2协议发行,但商业使用需要获得官方的授权。Coreseek旨在提供高效、低内存占用以及高相关性的中文全文搜索能力。 ##### 1.2 Sphinx/...

    Coreseek 全文搜索服务器2.5

    **Coreseek 全文搜索服务器2.5**是一款基于开源全文搜索引擎Sphinx进行修改和增强的产品,它在原生Sphinx的基础上提供了更多的功能和优化,旨在为企业和开发者提供更高效、更灵活的全文检索解决方案。在GPL协议下,...

    最新版sphinx coreseek 4.1 win32

    它结合了Sphinx搜索引擎的强大性能和CoreSeek的中文处理能力,使得在中文环境下进行信息检索变得更为便捷。 Sphinx是一个开源全文搜索引擎,它拥有快速的索引速度和低内存占用,支持实时索引和多种数据源。CoreSeek...

Global site tag (gtag.js) - Google Analytics