新手问题 「解决」一个多功能的 search 是怎么做的?

QueXuQ · 2013年06月08日 · 最后由 QueXuQ 回复于 2013年06月10日 · 3404 次阅读

貌似现在流行一个搜索框,就可以做 N 多搜索。 例如: 在搜索框下,可以搜索 name,搜索 title 等等,方法如下:

where("name like ? OR title like ?", "%#{params[:search]}%")

但是还有一种更强大的搜索框,例如我想搜索 name 和 title,同时输入 name 和 title,并且用 “空格” 间隔开,而且还不分顺序,如:

搜索:“里小白  爱的日记”

自然就可以去他们的交集了,请问这样的搜索是怎么做的?是不是很好性能,不推荐呢?

解决方案:使用 sunsport github 地址:https://github.com/sunspot/sunspot railscasts 介绍:http://railscasts.com/episodes/278-search-with-sunspot

用全文检索吧,数据库不太适合这么复杂条件的搜索

#1 楼 @uudui 哦。原来这样,我之前只看过 js 的这个搜索。那有什么全文检索的推荐呢?

基于数据库能做的搜索参考 gem ransack 基于全文搜索和 rails 比较贴合的似乎是 solr,没研究过 个人用 elasticsearch, gem: tire

不知道lucene是不是适合楼主用

我在 rails2 的时候用 searchlogic rails3 我还不知道它能不能用。。。

全文检索加中文分词

#2 楼 @QueXuQ 用 sunspot 这个 gem 吧 https://github.com/sunspot/sunspot ,基于 solr 的,可以配合一些中文分词使用。

用 sql 的话,只能 column1 like '%xxx%' or column2 like '%xxx%',建议用 solr 之类的全文检索工具。

先 mark 下,这东西以后会有用,谢谢 @uudui

#7 楼 @uudui 谢谢,看了各位说的,应该只可以用全文检索了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册