華文Ruby Blog

JavaEye3.0开发手记之三 - 狮身人面

Robbin - 週一, 2007-09-10 11:02

网站:JavaEye 作者:robbin 发表时间: 2007-09-10 19:02 此文章来自于 http://www.JavaEye.com
声明:本文系JavaEye网站原创文章,未经JavaEye网站或者作者本人书面许可,任何其他网站严禁擅自发表本文,否则必将追究法律责任!
原文链接: http://robbin.javaeye.com/blog/122696

Sphinx的含义是“狮身人面像”,是古埃及的金字塔建筑,传说Sphinx是有翼的狮身女怪,她常叫过路行人猜谜, 猜不出者即遭杀害。

但是我这里说的Sphinx是一个高性能的搜索引擎:

http://www.sphinxsearch.com/

Sphinx是一个俄国人开发的搜索引擎,它的主要特点是:

一、性能非常出色
150万条记录一两分钟就索引完毕,2-4GB以内的文本检索速度不到0.1秒钟。ferret也望尘莫及,更不要说lucene了。

二、和数据库集成性很好
Sphinx通过配置文件可以自行读取数据库信息做索引,不依赖任何外部的应用程序,并且可以作为一个daemon进程启动,支持分布式检索,并发响应性能很好。因此很多过去使用ferret的人因为并发检索的问题都改用Sphinx了。

三、可以做MySQL的全文检索
MySQL的数据库引擎是可插拔的结构,Sphinx开发了一个SphinxSE数据库引擎,可以在编译MySQL的时候直接编译到MySQL里面去,这样的话,可以在数据库级别支持高性能的全文检索,那么你可以以如下SQL方式去全文检索了:

select * from xxxx where query='test;sort=attr_asc:group_id' AND ....;

很棒吧。

四、RoR支持也很棒
有一个acts_as_sphinx插件,类似acts_as_ferret,集成到RoR里面很简单。

Sphinx目前可能存在的问题估计还是中文分词问题:

Sphinx支持UTF-8编码的分词,但是他自己的文档上面说仅仅支持英文和俄文的分词,因此我估计对中文分词可能还不能很好的支持。

总之,Sphinx是我们另外一个很棒的选择。




《 JavaEye3.0开发手记之三 - 狮身人面 》 的评论也很精彩,欢迎您也添加评论。查看详细 >>

推荐相关文章:
  让ActiveRecord更加active
  JavaEye3.0开发手记之二 - rails的UTF-8支持造成的正则表达式问题




JavaEye推荐
上海乐福狗信息技术有限公司:诚聘技术经理和开发工程师
免费下载IBM社区版软件--它基于开放的标准,支持广泛的开发类型,让您的开发高效自主!
京沪穗蓉四地免费注册,SOA技术高手汇聚交锋.
上海:优秀公司德比:高薪诚聘 资深Java工程师
广州:优易公司:诚聘Java工程师,开发经理
上海:尤恩斯国际集团:诚聘开发工程师
北京:优秀公司NHNChina招聘:WEB开发,系统管理,JAVA开发, DBA


从ChinaonRails网站访问来源看RoR人才的分布情况

Caiwangqin - 週日, 2007-09-09 06:46

robbin写了一篇从JavaEye网站访问来源看软件公司的区域选择

从上图可以看出,在国内一线城市北京、上海、广州和深圳四个城市,软件人才的储备北京遥遥领先,上海和广州居中,差不多是北京的一半,而深圳则落入二线城市的行列。另外值得注意的是杭州的人才储备也非常丰富,虽然没有办法和周边城市上海相比,但是也远远超过了深圳。

然后我查看了一下ChinaonRails网站访问来源,ChinaonRails是国内专业的Ruby on Rails社区,从下图可以看出,访问来源基本和JavaEye网站一致,看来北京,上海,广州在Ruby on Rails人才方面也是排名前三甲。


//
//
current_user = {id: ‘’, username: ‘’, nickname: ‘’};
window.notes_container = new PhotoNotesContainer(’photo_notes’, ‘photoImgDivff80808114d6a24e0114e8fdd3fc1513′, photo, current_user);
$(’photo_img’).addEvent(’load’, show_notes_initially);
//
//


终于我也 Twitter 了

Caiwangqin - 週三, 2007-09-05 03:18

我在2007年3月份的时候就注册了 http://twitter.com/Caiwangqin ,但从来没有发布过任何内容。我还是习惯以Blogging的形式发布内容,如我的行程。身边不断的有人在说 Twitter, 看到众多熟脸都在使用 Twitter, 收到了 someone is now following you on Twitter! 于是我也开始尝试了。

使用 GTalk 更新 Twitter不错,这大大降低了信息的发布成本,但我还是固执的认为这些发布的简短信息不如 Blogging 有用,仅能满足与人联系的需求,社交可以用 Twitter, 分享、记录一篇还是要 Blogging .

Working with MindMap

Caiwangqin - 週二, 2007-09-04 13:33

首先感谢CSDN韩磊发给我这个好用的工具PowerCam5, 我刚才尝试录制了8分19秒的关于使用MindMap(思维导图)的语音课程。第一次使用这个工具,看不到录音条,边想边说的,有些磕磕巴巴,讲解不是很流畅,其中有多处错误,熟悉此软件的人就不必浪费时间观看了,多多包涵。这个形式还是很好的,之后我会录制系列的 Ruby on Rails 相关课程。

希望大家善用佳软,更有效的组织信息,以下是课程学习地址:http://yaymedia.cn/course/mindmap/

AK47 與 M16

thegiive blog - 週六, 2007-09-01 13:00

WordCamp 2007 现场

Caiwangqin - 週六, 2007-09-01 01:45

 

 

 

 

 

Capistrano 自動化 deploy Rails

ihower - 週一, 2007-08-27 16:32

今天花了點時間在自己的 server(FreeBSD) 上試用 Capistrano,這是一套讓你在 local 透過 SSH 自動執行遠端任務的 deployment system,當然最常見的應用就是 deploying Rails applications 了。

老實說,第一次的設定還真讓我 try and error,尤其前一陣子剛出 Capistrano 2.0 版,變更了一些用法,所以很多舊範例就不敢用了,而官網上的文件也實在有點簡略說… ^^@ 其中關於 the “spin” script 的部份不甚解原理(?),最後的做法除了讓登入的帳號有 sudo 權限,也需要先手動登入執行第一次的啟動 sudo script/process/spin。

anyway… 還是照著 Getting Started 配著過時的 AWDwR 2nd. Chap 27 來做,值得注意的有

svn 的帳號密碼要這樣設定

set :scm_username, “username” # svn user name
set :scm_password, “password”

另外你應該不會把 database.yml 給 commit 出去,所以先建立好一份來做複製。

namespace :deploy do
desc “Create database.yml ”
task :after_update_code, :roles => [:web] do
db_config = “#{shared_path}/config/database.yml.production”
run “cp #{db_config} #{release_path}/config/database.yml;”
end
end

最後的成果是只要打 cap deploy,就會自動連到 server 上,執行 svn checkout 出最新版本,跑些客製的 script,然後重新 restart mongrel cluster。

為甚麼 Capistrano 這麼被重視呢? 這種 deploy 的過程,其實必定是個一再執行的過程(嗯,除非不需要再開發升級了),而且隨者時間演進,這個過程常常會有各種客製的 script 要執行,例如檔案變更/重新載入 config/清除 cache…etc

然而在發行新版本的時候,往往卻也是已經寫了好多程式,累的要命的時候,這時候一個已經自動化的 deploy process 就像甘霖露水,你不會想一個個手動執行那些複雜步驟的(而且萬一漏做了甚麼,都是無可預期的 disaster )。

Update(2007/9/1): 改在 Mac 上做 deploy,又卡關了好久:

把 /script/process/spin 的內容改成慣用的 mongrel_rails cluster::restart。

depoly.rb 中所有 run rake 的地方,多加完整 rake 路徑。以及 set :rake, “/opt/local/bin/rake”

我暫時沒有開 sudo 權限,所以 cap deploy 的最後一步 restart 會失敗,到這裡就只好手動囉。

Update(2007/9/4): 關於 sudo,應該再新增以下設定

set :use_sudo, false

至此應該一步 cap deploy 就可以搞定了… :)

Update(2007/9/5): 真是一天一牛步在修這個 script,請再加上環境變數 (因為 Capistrano 用 SSH 登入後並不會讀取你的環境變數啊~),還有 deploy:restart 也重寫過吧,不需要使用 /script/process/spin :

default_environment[”PATH”] = “/Users/ihower/bin:/opt/local/bin:/bin:/sbin:/usr/bin:/usr/sbin”

desc “Restart Mongrel”
task :restart, :roles => [:app] do
run <<-EOF
cd #{current_path} && mongrel_rails cluster::restart
EOF
end

至此終於一步 cap deploy 就可以搞定了(Mac)… :)

by the way…解釋一下架構,這邊是用 mongrel_rails cluster 跑在一群 ports 上(例如8000~8002),再搭配 Apache Proxy 機制把 HTTP request balance 到各個 mongrel 上。這是目前 deploy rails 最建議的 solution。

關於 apache settings 照抄 AWDwR 2nd. 的就可以 work 了,跑 cap deploy 的時候也不需要重開 apache,這兩個元件是獨立的。

9月2日上海之行

Caiwangqin - 週一, 2007-08-27 12:32

已确定行程 9.2日 在上海,有Ruby on Rails相关需求人士可以见面聊聊。携程旅行网还是很方便的,以下是我的航班:

北京-上海 往返机票


出发航班 MU5122 (中国东方航空公司)2007-9-1 18:00:00
返回航班 CA1580 (中国国际航空公司)2007-9-3 9:35:00


串聯內容