<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-167  評論-65  文章-0  trackbacks-0
    環境: sphinx 0.9.8 rc2 + libmmseg 0.7.3 + thinking_sphinx 1.2.8 + ubuntu 8.1.0 Desktop version

    效果預覽:
    1, http://www.zikii.com/ 這個網站 也是基于 sphinx 實現的
    2,我的



    由于項目需要,需要實現站內搜索,全文檢索和 中文分詞 功能,最后選型了 sphinx + libmmseg + thinking_sphinx , 折騰了好大一會,最后測試成功
    sphinx 是俄國人開發的opensourse 搜索引擎,索引速度很快, libmmseg 是中國人開發的中文分詞程序,thinking_sphinx 是封裝調用sphinx的rails plugin

    下面用到的所有資源 打包下載:
    http://www.uushare.com/user/fl1429/file/2043579

    1,項目的所有的源碼編譯安裝 , 全部移到 /root 下進行,凡是出現權限不夠的, 在命令前加上 sudo

    2,安裝 libmmseg

    ./configure
    make
    make install
    具體可以參考:
    http://www.coreseek.cn/opensource/mmseg/

    3,安裝 ruby 擴展,進入 mmseg ruby 目錄下 (注意最后面有一個點)

    cd ruby
    cp /usr/local/include/mmseg/*.h .
    cp ../src/*.h .   

    cp ../src/css/*.h .
    ruby extconf.lin.rb
    make
    sudo make install
    成功的話,可以到irb下,測試看看是否成功了
    irb 
    require 'mmseg'
    注意:如果在這一步出錯,且出錯提示為:

    css/UnigramCorpusReader.cpp:89: error: ’strncmp’ was not declared in this scope

    則需手工編輯.src/css目錄下UnigramCorpusReader.cpp 文件,在其第一行加上

    #include <string.h>

    然后重新 make,即可通過

    4,創建辭典文件

    進入 mmseg 的 data 目錄下

    mmseg -u unigram.txt

    把生成的文件名改為 uni.lib

    5,安裝sphinx (把兩個補丁放入 解壓后 的 sphinx下)

    cd sphinx-0.9.8-rc2

    patch -p1 < sphinx-0.98rc2.zhcn-support.patch #patch中文補丁

    patch -p1 < fix-crash-in-excerpts.patch # patch 防crash 補丁

    Copy mmseg安裝文件夾下 src/csr_typedefs.h 和

    src/css/SegmenterManager.h 到Sphinx安裝文件夾下的 src

    文件夾下

    ./configure

    make
    sudo make install

    注意:如果在這一步出現

    /usr/local/include/mmseg/freelist.h:22: error: ‘strlen’ was not declared in this scope

    的錯誤,手工修改 /usr/local/mmseg/include/mmseg/freelist.h

    在上面添加
    #include <string.h>

    以上的配置 sphinx 就支持 中文分詞 搜索了。。。

    Demo:

    1,依照 Ryan 的例子 配置 好基本的英文搜索

    http://railscasts.com/episodes/120-thinking-sphinx

    2,重點是 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

    3,把上面生成的 uni.lib 辭典文件 拷入 項目的 lib 下 (或者別的地方,看你配置里的charset_dictpath的,不編譯的話,可以用別人現成的uni.lib)

    4,在項目的 config 下新建一個 sphinx.yml 文件
    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

    上面的
    /home/feng/RailsProject/Search/lib 可以寫成 "#{RAILS_ROOT}/lib"
    5,生成配置文件

    rake ts:config

     這樣config 下會生成一個 development.sphinx.conf 文件

    找到 charset_type = utf-8 把后面 utf-8 修改為 zh_cn.utf-8,并在下面添加如下語句

    charset_dictpath = /home/feng/RailsProject/Search/lib (你工程的lib路徑)

    6,建立索引

    rake ts:index INDEX_ONLY=true
    注意后面必須添加 INDEX_ONLY=true不然的話,配置文件會被重置,還有不要寫成 INDEX_ONLY = true


    7,啟動sphinx服務

    rake ts:start
    8,啟動webrick

    注意,sphinx 必須在webrick的前面 先啟動
    我的demo項目,其實就是上面ryan 的,下載后可以看到我的具體配置,或者詳細的內容

    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


    write by feng
    posted on 2009-09-22 17:15 fl1429 閱讀(1731) 評論(0)  編輯  收藏 所屬分類: Rails
    已訪問數:
    free counters
    主站蜘蛛池模板: 黄色网页在线免费观看| 国产午夜无码视频免费网站| 久久精品国产精品亚洲下载| 国产亚洲精品美女2020久久| 免费视频成人手机在线观看网址| 无码国产精品一区二区免费式影视| 精品免费国产一区二区| 亚洲风情亚Aⅴ在线发布| 嫩草影院免费观看| 亚洲AV无码一区二区三区电影| 91在线视频免费观看| 性色av无码免费一区二区三区| 在线播放亚洲第一字幕| 伊人免费在线观看高清版| 人人狠狠综合久久亚洲88| 亚洲av纯肉无码精品动漫| 亚洲?V乱码久久精品蜜桃| 一道本在线免费视频| 亚洲精品无码久久久影院相关影片| 亚洲色精品VR一区区三区| 日韩精品免费电影| 亚洲另类古典武侠| 日本一道高清不卡免费| 精品一区二区三区高清免费观看| 日韩一区二区在线免费观看 | 一级a性色生活片久久无少妇一级婬片免费放 | 麻豆最新国产剧情AV原创免费| 在线亚洲精品自拍| 国产成人精品一区二区三区免费| 亚洲高清国产拍精品青青草原| 2020国产精品亚洲综合网 | 中国黄色免费网站| 亚洲男人都懂得羞羞网站| 国产va免费精品观看精品| 爱爱帝国亚洲一区二区三区| 亚洲码国产精品高潮在线| 色多多A级毛片免费看| 久久夜色精品国产噜噜亚洲AV| 香蕉视频在线免费看| 久久成人免费播放网站| 亚洲真人无码永久在线观看|