代码之家  ›  专栏  ›  技术社区  ›  Nikita Fedyashev

是否可以在动态条件下使用狮身人面像搜索?

  •  1
  • Nikita Fedyashev  · 技术社区  · 16 年前

    在我的网络应用程序中,我需要在 items 具有以下条件的表:

    1. items.is_public = 1 (使用) title 索引字段)-可以检索大量结果(基数比其他情况高得多)

    2. items.category_id = {X} (使用) 标题 + private_notes 索引字段)-通常少于100个结果

    3. items.user_id = {X} (使用) 标题 + 私人票据 索引字段)-通常少于100个结果

    在所有这些情况下,我都找不到使斯芬克斯起作用的方法,但在第一种情况下,它起作用很好。 我应该只在第一个案例中使用sphinx,并在mysql中使用普通的“慢”全文搜索(至少是因为在2-3个案例中基数较低)?

    或者仅仅是我和斯芬克斯可以做几乎所有的事情?

    1 回复  |  直到 16 年前
        1
  •  1
  •   James Healy    16 年前

    如果不完全了解您的模型,我可能会错过一些东西,但这是如何做到的:

    class item < ActiveRecord::Base
      define_index do
        indexes :title
        indexes :private_notes
        has :is_public, :type => :boolean
        has :category_id
        has :user_id
      end
    end
    

    1)

    Item.search(:conditions => {:title => "blah"}, :with => {:is_public => true})
    

    2)

    Item.search("blah", :with => {:category_id => 1})
    

    3)

    Item.search("blah", :with => {:user_id => 196})