思考Sphinx使用'with'和索引属性进行搜索

时间:2013-01-31 01:28:40

标签: ruby-on-rails ruby-on-rails-3.2 sphinx thinking-sphinx

更新

好的,所以我不再收到错误,但我没有收到任何结果(即使只有一个搜索选项)。

我在我的索引列表中添加了has子句:

  define_index do
    has bar_profiles(:day), :as => :days
    indexes bar_profiles.budget, :as => :budget_tags
    .
    .
  end

所以我的搜索是:

bars = Bar.search(search_options)

search_options = {:conditions=>{:budget_tags=>"LOW BUDGET"}, :with=>{:days=>"thursday"}, :page=>1, :per_page=>20}

bar_profiles包含预算,经验,代码,日等行。

Bar有很多bar_profiles(每天可能有1个)

我想要做的是使用思维狮身人面像搜索(在条形模型中)将用户选择的预算,经验,标签标准与bar_profile匹配,该bar_profile具有与“今天”匹配的日期(当天) )。

这是我要完成这个应用程序的最后一件事,我要拔掉头发,因为我找不到任何关于如何正确设置的例子......

如果您有任何见解请发布,任何有用的。感谢。


起初我认为我的问题类似于this并且有一个额外的抽象层,但我认为我的问题在于搜索选项而不是索引。

首先请允许我声明,我一直在尝试使用思维狮身人面像修复之前的“群体实施”。我终于让该项目完成了90%的工作,最后10%的交易是能够获得正确的过滤器进行检查。

以下是简要概述。该应用程序具有条形和bar_profiles(在连接到这些2和用户的许多其他表中,但它们不是必须了解此问题。)对于每个条形,每周的每一天都可以有bar_profile。

所以在bar_profile模型中有:

belongs_to :bar

并且在栏中有:

has_many :bar_profiles

后面是bar中的索引(由前一个开发人员编写):

  define_index do
    # name is a reserved keyword so we need to specify it as a symbol to work
    indexes :name
    indexes tags
    indexes bar_profiles.day, :as => :day
    indexes bar_profiles.tags, :as => :daily_tags
    indexes bar_profiles.budget, :as => :budget_tags
    indexes bar_profiles.experience, :as => :experience_tags
    set_property :delta => true
  end

我遇到的问题是这个当前的实现并没有将搜索正确地限制到当天。它不是检查条形图的当前天数,而是检查所有条形图。

所以我在方法开始时设置当前日期:

today = (Time.now + Time.zone_offset('EST')).strftime("%A")

然后我认为它需要像下面这样的东西。我引用this post by pat关于使用'with',但我不确定我是否搞乱语法(因为我收到错误):

search_options = {:conditions => {}, :with => {:day=>today}, :page => 1, :per_page => algorithm.results_per_page}

然后我使用这些搜索选项:

search_options[:conditions][:experience_tags] = options[:experience] unless options[:experience].blank?
budget = combine_budgets(options[:budget])
search_options[:conditions][:budget_tags] = budget unless budget.blank?

但是当我尝试运行搜索时,我在开发日志中得到了这个:

^^^^ ERROR! Reason: index bar_core,bar_delta: no such filter attribute 'day'

现在我对此非常困惑,因为如上所示设置了:day的索引......我不确定'filter属性'是否与index属性不同。如果有人能够对此提供一些见解,那将非常感谢(看着你@pat)。

这是这个应用程序的最后一个问题,所以如果有人能帮助我,我将非常感激。

谢谢,

艾伦

0 个答案:

没有答案