2009年3月27日 星期五

sphinx on rails and ultrasphinx

全文搜尋 Sphinx on Rails
fanuan's ultrasphinx at master
Searching a Ruby on Rails application with Sphinx and Ultrasphinx
Sphinx+MySQL全文檢索架構與安裝
使用libmmseg實現Ruby的中文分詞功能 <= 看起來很強, 可是我還沒用 XD
Sphinx 的特點在於它直接存取 MySQL (或PostgreSQL),完全獨立於 Rails app。它不像 acts_as_ferret 和 acts_as_solr 使用 rails callback 來做新資料的索引動作,而是設定 crontab 定期跑 indexer (如每半小時),大大提高了 search daemon 穩定度(反之亦然),也不太有索引資料損壞的問題(在講ferret?)。目前看到的評價也都是穩穩穩高效能,用過就不想再用 Ferret 了。Ultrasphinx 的作者也有 benchmark 數據可供佐證。

下載, 安裝sphinx

要安裝ultrasphinx, 要先安裝 chronic gem
安裝ultrasphinx
ultrasphinx 也有支援will_paginate
裝好之後就來設定
default.base file 支援中文搜尋,這個答案在官網討論區


接下來設定就是設定想要索引的部份

接著產生實際要用的設定檔。注意到如果你之後有改 model 的 is_indexed,這個設定檔每次都要重新產生(因為裡面的東西是 SQL 指令)。

rake ultrasphinx:configure

跑索引跟 daemon 很簡單

rake ultrasphinx:index
rake ultrasphinx:daemon:start



RAILS_ROOT/config/ultrasphinx 下的base file 才是讓你編的, 也可以用development, production, test 就像 rails environment 的作法一樣
之後在跑
來產生像對應的 default.conf file 這才是Sphinx 真正在用的

沒有留言: