我已经使用 Sphinx 实现了全文搜索和 Thinking Sphinx 。 我想添加按列搜索。像这样的事情:-(以 Stack Overflow 为例)
假设您想查看与您相关的事件,只需键入:
user:me
然后它将返回一个结果,其中包含与piimesons相关的所有问题和答案。
如果您输入
votes:15
然后它将返回一个结果,其中包含所有标记为超过 15 票的问题。
如果你输入
user:me votes:15
然后它将返回所有属于您且投票数超过 15 票的问题和答案。
我该如何实现这个东西?
现在我的搜索结果基于全文搜索。如何包含这些功能?
Sphinx 或 Solr 中可用的任何选项或者任何其他搜索引擎?
最佳答案
:思维狮身人面像中带有
选项。
首先,您必须在索引定义 ( check out attributes section here ) 中定义这些属性。
has views_count, :as => :views, :type => :integer
has user.id, :as => :user, :type => :integer
然后你可以搜索这样的帖子:
Post.search '', :with => {:views => 12..maxint, :user => User.first.id}
(我不确定是否有更优雅的给出开放范围的可能性,但 12..max_int 应该足够了)
两件重要的事情:
- 如果你想统计相关对象(例如响应),你应该使用计数器缓存
- 如果您的“用户”是多态关联,我建议使用
“CRC32(CONCAT(user_type, user_id))”
而不是user.id
关于ruby-on-rails - 如何实现像Stack Overflow一样的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3149790/