效果预览Q?br />
1Q?http://www.zikii.com/ q个|站 也是Z sphinx 实现?br />
2Q我?br />

׃目需要,需要实现站内搜索,全文(g)索和 中文分词 功能Q最后选型?sphinx + libmmseg + thinking_sphinx Q?折腾?jin)好大一?x),最后测试成?br />
sphinx 是俄国h开发的opensourse 搜烦(ch)引擎Q烦(ch)引速度很快Q?libmmseg 是中国h开发的中文分词E序Qthinking_sphinx 是封装调用sphinx的rails plugin
下面用到的所有资?打包下蝲Q?br />
http://www.uushare.com/user/fl1429/file/2043579
1Q项目的所有的源码~译安装 Q?全部Ud /root 下进?凡是出现权限不够的, 在命令前加上 sudo
2Q安?libmmseg
./configure
make
make install
具体可以参考:(x)
http://www.coreseek.cn/opensource/mmseg/
3,安装 ruby 扩展Q进?mmseg ruby 目录?Q注意最后面有一个点Q?br />
cd ruby
cp /usr/local/include/mmseg/*.h .
cp ../src/*.h .
cp ../src/css/*.h .
ruby extconf.lin.rb
make
sudo make install
成功的话Q可以到irb下,试看看是否成功?br />
irb
require 'mmseg'
注意:如果在这一步出?且出错提CZؓ(f)Q?br />
css/UnigramCorpusReader.cpp:89: error: ’strncmp’ was not declared in this scope
则需手工~辑.src/css目录下UnigramCorpusReader.cpp 文g,在其W一行加?br />
#include <string.h>
然后重新 make,卛_通过
4Q创典文?br />
q入 mmseg ?data 目录?br />
mmseg -u unigram.txt
把生成的文g名改?uni.lib
5,安装sphinx (把两个补丁放?解压??sphinx?
cd sphinx-0.9.8-rc2
patch -p1 < sphinx-0.98rc2.zhcn-support.patch Qpatch中文补丁
patch -p1 < fix-crash-in-excerpts.patch # patch 防crash 补丁
Copy mmseg安装文g夹下 src/csr_typedefs.h ?br />
src/css/SegmenterManager.h 到Sphinx安装文g夹下?src
文g夹下
./configure
make
sudo make install
注意Q如果在q一步出?br />
/usr/local/include/mmseg/freelist.h:22: error: ‘strlen’ was not declared in this scope
的错误,手工修改 /usr/local/mmseg/include/mmseg/freelist.h
在上面添?br />
#include <string.h>
以上的配|?sphinx 支?中文分词 搜烦(ch)?jin)。。?br />
Demo:
1,依照 Ryan 的例?配置 好基本的英文搜烦(ch)
http://railscasts.com/episodes/120-thinking-sphinx
2Q重Ҏ(gu) model 里的 定义索引
define_index do
indexes content
indexes :name, :sortable => true
indexes comments.content, :as => :comment_content
indexes [author.first_name, author.last_name], :as => :author_name
has author_id, created_at
end
3Q把上面生成?uni.lib 辞典文g 拷入 目?lib ?Q或者别的地方,看你配置里的charset_dictpath?不编译的话,可以用别人现成的uni.libQ?br />
4Q在目?config 下新Z?sphinx.yml 文g
development: &my_settings
enable_star: 1
min_prefix_len: 0
min_infix_len: 2
min_word_len: 1
max_results: 70000
morphology: none
listen: localhost:3312
charset_dictpath: /home/feng/RailsProject/Search/lib
test:
<<: *my_settings
production:
<<: *my_settings
上面?br />
/home/feng/RailsProject/Search/lib 可以写成 "#{RAILS_ROOT}/lib"
5Q生成配|文?br />
rake ts:config
q样config 下会(x)生成一?development.sphinx.conf 文g
扑ֈ charset_type = utf-8 把后?utf-8 修改?zh_cn.utf-8,q在下面d如下语句
charset_dictpath = /home/feng/RailsProject/Search/lib Q你工程的lib路径Q?br />
6Q徏立烦(ch)?br />
rake ts:index INDEX_ONLY=true
注意后面必须d INDEX_ONLY=true不然的话Q配|文件会(x)被重|?q有不要写成 INDEX_ONLY = true
7Q启动sphinx服务
rake ts:start
8,启动webrick
注意Qsphinx 必须在webrick的前?先启?br />
我的demo目Q其实就是上面ryan 的,下蝲后可以看到我的具体配|,或者详l的内容
http://www.uushare.com/user/fl1429/file/2043752
ref:
http://wiki.github.com/cogentsoft/zbs/180787
http://www.javaeye.com/topic/431217?page=1
http://www.javaeye.com/topic/196451
http://blog.sina.com.cn/s/blog_412d58ec010090pq.html
http://freelancing-god.github.com/ts/en/rake_tasks.html

]]>