sphinx:Rails程序员Sphinx中文全文检索安装指南来源: 发布时间:星期四, 2009年2月12日 浏览:27次 评论:0
当时Sphinx还不支持中文分词现在情况已经完全改变了李沫南为Sphinx开发了中文分词插件——libmmseg对于libmmsegrobbin以前也有介绍不过是用在Ferret里面
http://www.javaeye.com/topic/196451 李沫南还开发了个支持中文全文检索Sphinx定制版本——Coreseek除了支持中文全文检索外Coreseek最大特点是支持使用Python提供自定义数据源我们可以简单地理解为:Coreseek = Sphinx + libmmseg + py_datasource Sphinx主要优势是: 1. 性能优异:robbin以前已经介绍过 2. 容易学习:架构很清晰学习成本很低 3. 和数据库结合更加紧密:对于以数据库为中心Web应用来说实现全文检索功能使用Sphinx开发工作量更低 Sphinx开发人员好像只熟悉PHP开发因此在其手册里面举例子都是用PHP写不过Rails/Ruby开发人员也可以很方便地使用Sphinx 对于中文Rails开发人员而言做全文检索最佳组合是Sphinx + libmmseg + UltrasphinxUltrasphinx是个Rails插件Rails开发人员可以使用它来很方便地Sphinx功能 这篇文档先介绍下这些工具安装思路方法和开发相关内容将在后续文章中介绍 1. 在Linux上安装 从这里http://www.sphinxsearch.com/downloads.html下载Sphinx 0.9.8 rc2版: http://www.sphinxsearch.com/downloads/sphinx-0.9.8-rc2.tar.gz tar zxvf sphinx-0.9.8-rc2.tar.gz 要在Sphinx中使用libmmseg需要为Sphinx打补丁从这里http://www.coreseek.cn/opensource/Sphinx/下载两个补丁文件: http://www.coreseek.com/uploads/sources/sphinx-0.98rc2.zhcn-support.patch http://www.coreseek.com/uploads/sources/fix-crash-in-excerpts.patch cd sphinx-0.9.8-rc2 patch -p1 < ../sphinx-0.98rc2.zhcn-support.patch patch -p1 < ../fix-crash-in-excerpts.patch 自己打补丁比较麻烦而且补丁是针对特定Sphinx版本若版本不匹配会更麻烦最简单思路方法是直接使用李沫南已经打好补丁Coreseek包和自己打补丁效果是样: http://www.coreseek.com/uploads/sources/coreseek_fulltext_2.5.tar.gz tar zxvf coreseek_fulltext_2.5.tar.gz 还需要从这里http://www.coreseek.cn/opensource/mmseg/下载libmmseg: http://www.coreseek.com/uploads/sources/mmseg-0.7.3.tar.gz tar zxvf mmseg-0.7.3.tar.gz 首先编译libmmseg: cd mmseg-0.7.3 ./configure make make 然后编译Sphinx使用李沫南打好补丁Coreseek包注意编译这个版本的前需要先安装个python-dev包在RedHat/CentOS中这样安装: rpm -ivh python-devel-2.4.3-19.el5.i386.rpm 可能还需要安装mysql-devel这个包在RedHat/CentOS发行版中有我这里已经安装好了 另外在编译前做configure时还需要设置两个环境变量 cd coreseek_fulltext_2.5.source CPPFLAGS=-I/usr//python2.4 LDFLAGS=-lpython2.4 ./configure make make 2. 在Windows上安装 在Windows上为Sphinx打补丁、编译、连接libmmseg要比在Linux上做这些事情麻烦得多而且大多数Windows上开发人员都没有自己编译开源软件Software习惯幸好李沫南已经做了个安装包: http://www.coreseek.com/ft/csft_up_2.5.1.exe 执行这个安装包即可安装CoreseekWindows版假设将Coreseek安装在D:CsFullText25 将D:CsFullText25bin加入到环境变量PATH中以便以后在命令行能够找到Sphinx提供各种工具 3. 安装Ultrasphinx Sphinx在Linux和Windows上都已经安装好了我们可以通过个Rails来做下测试 假设我们原先有个Rails应用thought_log cd thought_log 在安装Ultrasphinx的前需要先安装个Ruby Gem: gem chronic 然后安装Ultrasphinx插件: ruby script/plugin -x svn://rubyforge.org/var/svn/fauna/ultrasphinx/trunk 若这个Rails应用尚未提交到SVN中或者使用其他版本管理工具则执行: ruby script/plugin svn://rubyforge.org/var/svn/fauna/ultrasphinx/trunk 注意执行这条命令前需要先安装好SVN for Windows(不是TortoiseSVN) 为了在Windows上正常使用Ultrasphinx需要为Ultrasphinx打点补丁修改vendor/plugins/ultrasphinx/tasks/ultrasphinx.rake将其中: Ruby代码 "searchd --config '#{Ultrasphinx::CONF_PATH}'" "searchd --config '#{Ultrasphinx::CONF_PATH}'" 改为: Ruby代码 "searchd --config "#{Ultrasphinx::CONF_PATH}"" "searchd --config "#{Ultrasphinx::CONF_PATH}"" 这样修改原因是类似以下使用单引号写法: searchd --config 'D:/WORK/thought_log/config/ultrasphinx/development.conf' 在Windows上无法正常运行必须改为使用双引号写法: searchd --config "D:/WORK/thought_log/config/ultrasphinx/development.conf" 除了例子中对searchd在ultrasphinx.rake文件中所有执行命令行地方都需要做这样修改 4. 修改Sphinx配置文件并创建索引 安装完Ultrasphinx的后将: vendor/plugins/ultrasphinx/examples/default.base 复制到: config/ultrasphinx/default.base 为了正常支持中文全文检索需要对default.base做些修改 将其中: char_type = utf-8 改为: char_type = zh_cn.utf-8 并且在char_type设置下面加入行: char_dictpath = D:/CsFullText25/share/csft_config/dict 然后删除所有char_table设置 要注意在Windows上和Linux上路径区别写法为了在Windows上正常使用需要将default.base中所有路径改为绝对路径例如要将: <% tmp = "/tmp/sphinx/" %> 改为: <% tmp = "D:/tmp/sphinx/" %> 另外由于SphinxWindows版不支持seamless_rotate需要在development.conf中将这个功能关掉: seamless_rotate = 0 修改Model代码加入全文检索支持: 假设我有个Model叫做Project其中有个属性叫做name我希望对这个属性做全文检索我在project.rb中加入行: is_indexed :fields => ['created_at', 'name'] 生成配置文件: rake ultrasphinx:configure 这条命令执行后在config/ultrasphinx下创建了个development.conf这个文件就是Sphinx配置文件 创建索引: rake ultrasphinx:index 索引相关文件创建在: D:tmpsphinx 其中“D:tmp”是环境变量TMP值 5. 启动Sphinxsearchd服务: rake ultrasphinx:daemon:start 这个时候会在3313端口启动个searchd搜索请求将会全部发送到这个端口来执行 也可以自己手工来启动searchd searchd --config "D:WORKthought_logconfigultrasphinxdevelopment.conf" 在Windows上还可以将searchd安装为个系统服务: searchd -- --config "D:WORKthought_logconfigultrasphinxdevelopment.conf" 启动这个服务即可 6. 测试 ruby script/console search = Ultrasphinx::Search.(:_names => 'Project') search.run search.results 如果执行这几条语句都没有报错那么安装就成功了 0
相关文章读者评论发表评论 |