<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 閱讀(1745) 評論(0)  編輯  收藏 所屬分類: Rails
    已訪問數:
    free counters
    主站蜘蛛池模板: 久久免费国产视频| 久久精品国产亚洲AV未满十八| 久久99精品免费一区二区| 久久久亚洲精品视频| www一区二区www免费| 无码精品A∨在线观看免费| 亚洲精品私拍国产福利在线| 久久er国产精品免费观看2| 国产无人区码卡二卡三卡免费| 亚洲精品偷拍无码不卡av| 高h视频在线免费观看| 99在线在线视频免费视频观看| 精品免费国产一区二区| 亚洲av无码成h人动漫无遮挡| 久久亚洲精品国产亚洲老地址| 久久这里只有精品国产免费10| 日韩亚洲产在线观看| 国产成人免费ā片在线观看| 特级毛片aaaa级毛片免费| 国内精品久久久久久久亚洲| 久久久国产精品福利免费| 亚洲精品美女在线观看| 成全影视免费观看大全二| 色噜噜狠狠色综合免费视频| 国产乱辈通伦影片在线播放亚洲| 在线观看片免费人成视频播放| 亚洲成人高清在线| 一级黄色免费毛片| 亚洲日本va午夜中文字幕久久| 国产在线精品一区免费香蕉 | 国产亚洲精品a在线无码| 羞羞视频免费网站含羞草| 色久悠悠婷婷综合在线亚洲| 国产午夜免费高清久久影院| 亚洲13又紧又嫩又水多| 99久久免费中文字幕精品| 亚洲欧美国产欧美色欲| 国产亚洲精品成人a v小说| 国产成人精品免费午夜app| 亚洲成无码人在线观看| 永久免费在线观看视频|