【问题标题】:How to implement search like Stack Overflow如何实现类似 Stack Overflow 的搜索
【发布时间】:2011-03-10 03:38:57
【问题描述】:

我已经使用SphinxThinking Sphinx 实现了全文搜索。 我想添加按列搜索。比如:-(以 Stack Overflow 为例)

假设您想查看与您相关的活动,只需输入:

  user:me

然后它会返回一个包含所有与piemesons相关的问题和答案的结果。

如果你输入

 votes:15

然后它将返回一个结果,其中包含所有标记为超过 15 票的问题。

如果你输入

  user:me votes:15

然后它将返回所有属于你的超过 15 票的问题和答案。

我该如何实现这个东西?

现在我的搜索结果是基于全文搜索的。如何包含这些类型的功能?

Sphinx 或Solr 或任何其他搜索引擎中的任何可用选项?

【问题讨论】:

    标签: ruby-on-rails search


    【解决方案1】:

    :with 思考狮身人面像中的选项。

    首先,您必须在索引定义中定义这些属性 (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 应该足够了)

    两件重要的事情:

    1. 如果你想统计相关对象(例如响应),你应该使用计数器缓存
    2. 如果你的“用户”是多态关联,我推荐"CRC32(CONCAT(user_type, user_id))"而不是user.id

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 2010-10-30
      • 2011-02-24
      • 2016-06-11
      • 1970-01-01
      • 2010-09-16
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多