参考 dlee 的 http://www.iteye.com/topic/200065
在安装mmseg的过程中出错的解决办法以及自己整理一下在ubuntu8.1下的完整安装与使用
g++更换到4.1版本,python使用2.5编译coreseek通过
很不幸,这里我出错了,错误提示为:css/UnigramCorpusReader.cpp:89: error: 'strncmp' was not declared in this scope
手动修改了src/css/UnigramCorpusReader.cpp
在上面添加了一句
#include <string.h>
2、然后编译Sphinx,使用李沫南打好补丁的Coreseek包。注意编译这个版本之前需要先安装一个python-dev的包,在RedHat/CentOS中这样安装:
rpm -ivh python-devel-2.4.3-19.el5.i386.rpm
可能还需要安装mysql-devel这个包,在RedHat/CentOS发行版中有,我这里已经安装好了。
在ubuntu下用apt-get 来搜索并安装
另外在编译前做configure时还需要设置两个环境变量。
cd coreseek_fulltext_2.5.2.source
CPPFLAGS=-I/usr/include/python2.5 LDFLAGS=-lpython2.5 ./configure
make
make install
3. 安装Ultrasphinx
Sphinx在Linux和Windows上都已经安装好了,我们可以通过一个Rails程序来做一下测试。
假设我们原先有一个Rails应用thought_log
cd test_sphinx
在安装Ultrasphinx之前需要先安装一个Ruby Gem:
gem install chronic
然后安装Ultrasphinx插件:
使用 git可这么安装,首先到项目目录
cd vender/plugin
git clone git://github.com/defunkt/ultrasphinx.git 或
ruby script/plugin install -x svn://rubyforge.org/var/svn/fauna/ultrasphinx/trunk
若这个Rails应用尚未提交到SVN中,或者使用其他版本管理工具,则执行:
ruby script/plugin install svn://rubyforge.org/var/svn/fauna/ultrasphinx/trunk
注意,执行这条命令前需要先安装好SVN for Windows(不是TortoiseSVN)。
4. 修改Sphinx配置文件并创建索引
安装完Ultrasphinx之后,将:
vendor/plugins/ultrasphinx/examples/default.base
复制到:
config/ultrasphinx/default.base
为了正常支持中文字符的全文检索,需要对default.base做一些修改
将其中的:
charset_type = utf-8
改为:
charset_type = zh_cn.utf-8
并且在charset_type设置的下面加入一行:
charset_dictpath = D:/CsFullText25/share/csft_config/dict (此目录为你的coreseek源码的dict地址,你可 cp到别的地方)
然后删除所有charset_table的设置。
要注意在Windows上和Linux上路径的不同写法,为了在Windows上正常使用,需要将default.base中的所有路径改为绝对路径,例如,要将:
<% tmp = "/tmp/sphinx/" %>
改为:
<% tmp = "D:/tmp/sphinx/" %>
修改Model代码,加入全文检索支持:
假设我有一个Model叫做Project,其中有一个属性叫做name,我希望对这个属性做全文检索,我在project.rb中加入一行:
is_indexed :fields => ['created_at', 'name']
生成配置文件:
rake ultrasphinx:configure
这条命令执行后,在config/ultrasphinx下创建了一个development.conf,这个文件就是Sphinx的配置文件。
创建索引:
rake ultrasphinx:index
索引相关的文件创建在:
/tmp/sphinx
其中,“/tmp”是环境变量TMP的值。
5. 启动Sphinx的searchd服务:
rake ultrasphinx:daemon:start
这个时候会在3313端口启动一个searchd,搜索请求将会全部发送到这个端口来执行。
也可以自己手工来启动searchd
searchd --config "/:\WORK\test_shphinx\config\ultrasphinx\development.conf"
6. 测试
ruby script/console
search = Ultrasphinx::Search.new(:query=>'中国')
search.run
search.results
如果执行这几条语句都没有报错,那么安装就成功了。
使用点滴:
1、要特别注意此文件
development.conf
sphinx是完全根据此文件中的内容来配置和搜索,也就是说,如果想修改model中的index字段,得要修改或重新生成此文件
2、更多的查询和索引方式,参考
http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/classes/ActiveRecord/Base.html