要在Rails上使用全文检索,选择一直不多,以前我一直是使用Ferret + Act_as_ferret + rmmseg的.不过Ferret不支持ruby 1.9,好像也很久没更新了.现在Rails上可用的全文检索又多了一个,那就是Thinking Sphinx . JavaEye的 司徒正美 同学已经写了篇介绍TS的大作,详见利用thinking sphinx实现全文检索 .我只是记录一下我在本机的安装和使用.
安装:
- 安装coreseek:Coreseek全文搜索服务器,它是基于Sphinx的.作者已经提供各个平台的可用版本,并提供下载 我的机器是ubuntu 9.04,所以安装非常的简单,直接下载deb包回来安装即可,没有遇到任何问题.
- 安装mmseg:这个是用来中文分词的.刚才那个下载地址就可以下载,除了下载deb安装包(如果你也是使用ubuntu的话),还记得下载它的源代码回来,因为生成中文词典的时候要用.
- 安装thinking sphinx :我是使用gem的方法安装,详细的安装方法,请参看官方的说明文档,很详细.
配置:
- 在config/environment.rb文件中加上一句:config.gem "freelancing-god-thinking-sphinx",:lib => 'thinking_sphinx',:version => '1.2.5'
- 在你的项目根目录下的Rakefile文件上加上: require 'thinking_sphinx/tasks'
这个的作用就是你可以使用TS为你准备的很多个rake task.
- 在你的model中加上索引: #基本上都是这样子的
define_index do
indexes :content
has :created_at
set_property :delta => true #这个是实时索引,注意,你的model表中得有delta这个字段,类型是boolean
end
- 执行这个rake(请注意第 2 步): #如果你不生成配置文件的话
rake ts:in
#但是如果没有配置文件的话,你不能配置中文分词,所以还是用下面这个吧
rake ts:index
执行完这个,在config目录,你会看到 development.sphinx.conf 这个文件.
- 在修改 development.sphinx.conf 配置文件之前,要先生成中文分词的词典. cd mmseg-3.1/data
tar xvfz mmseg-3.1.tar.gz
mmseg -u unigram.txt
#这时目录下会生成一个unigram.txt.uni文件,这个就是词典了,要改名,这个是必须的,名字也是定死的,只能是uni.lib
mv unigram.uni uni.lib
#然后随便把它放到一个目录去,这个目录在配置Sphinx的时候有用,比如我的
cp uni.lib ~/xdict
- 修改 development.sphinx.conf 配置文件 #找到这个文件中 charset_type = utf-8 的地方
charset_type = utf-8
#改为:
charset_type = zh_cn.utf-8
#并在下面多加一句:
charset_dictpath = /home/yanghuan/xdict/ #这个目录就是存放刚才中文词典的目录
中文全文检索基本上大功告成.
有些值得注意的地方:
- 由于使用了实时索引,所以之前的数据是没有索引的,如果你要重建索引的话,可以使用 rake ts:rebuild
但是不知为何,我重建索引的时候,配置文件居然也变成了默认,所以如果你修改过配置文件的话,要小心.
- 1.2版本以上 #1.2版本以上,使用
ThinkingSphinx.search
#这个不再使用了
ThinkingSphinx::Search.search
-
ThinkingSphinx.search params[:q],:classes => [Post,Comment],:match_mode => :any
#当 params[:q] = 'this' ,注意这里是一个单词的时候,无法匹配,我理解这个模式是任意匹配其中之一,不知是为何.
其它的Thinking Sphinx的使用方法可以上它的官方网站看,上面已经介绍得很详细了.而coreseek的安装也已经极为方便,也就是中文分词的配置是要注意一下的.
在网上也找到其它几篇写得很详细的coreseek安装的文章,共享之.
分享到:
相关推荐
详细说明sphinx+coreseek安装、配置、php很用
主要介绍了centos+php+coreseek+sphinx+mysql之一coreseek安装篇的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
经过生产环境检验的千万级数据全文检索(搜索引擎)架构 Sphinx+MySQL
sphinx-coreseek中文手册 sphinx-coreseek中文手册 sphinx-coreseek中文手册 sphinx-coreseek中文手册
sphinx mmseg coreseek 搜狗 词库
Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等...
基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计
sphinx+php+mysqli检索测试
sphinx+xdict资源包
sphinx+php检索引擎
全文搜索引擎sphinx的简单使用,文档是配合java和mysql一起使用的方法。
Sphinx+Python+Oracle构建全文检索系统.pdf
基于Sphinx+MySql+Python的站内搜索引擎的设计与实现.pdf
Discuz官方出品,搭建Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词搜索引擎架构.doc
Sphinx+Python+Oracle构建全文检索系统
coreseek是一款基于sphinx开源的搜索引擎,因为sphinx只支持英文和俄文(即只能进行英文分词和俄文分词),所以如果要使用sphinx做中文搜索的话,需要自己独立去导入中文词库。而coreseek里集成了中文词库模块mmseg,...
sphinx-for-chinese是一款专注于中文搜索的全文检索软件,在sphinx的基础上添加了中文处理模块并优化了中文搜索效果。
基于Sphinx+MySql+Python的站内搜索引擎的设计与实现