0

わかりましたので、検索する必要がある日付フィールドがありますが、mysql クエリのように日ごとに検索する必要があります

 search_conditions << ["DAY(open_date) != ?", event.thursday.day] if options[:thur].blank?

この条件をThinking Sphinxで実行する必要があるので、これを試しました

    attr_accessor :event_day

    def event_day
     self.start_date.day
    end

    #thinking sphinx configurations for the event search
    define_index do
     indexes event_day
     ...
     ...

そして検索で私はこれを試しました

 search_string = "@event_day -#{event.thursday.day}" unless options[:thur].blank?

しかし、私はこのエラーが発生し続けます

index event_core: query error: no field 'event_day' found in schema

これを機能させる方法

4

2 に答える 2

1

Ruby 属性は SQL クエリでは使用できません。Railsはそれほど賢くありません。

その関数をレプリケートする SQL を記述するか、それを介してクエリの結果をフィルタリングする必要があります。

@my_query.where(:a => "b").select { |rec| rec.some_method == "some value" }
于 2012-04-06T16:08:55.950 に答える
0

Michael が指摘したように、Sphinx は Ruby の属性にアクセスできません。Sphinx はデータベースと直接通信します。

そのため、イベント日の値を保持する列を作成して Sphinx 経由で参照するか、start_date から日を抽出する SQL 関数 (MySQL または PostgreSQL によって異なる場合があります) を使用するフィールドを作成することができます。列 - 特に複雑ではありません。おそらく次のようになります。

indexes "GET_DAY_FROM_DATE(start_date)", :as => :event_day
于 2012-04-10T02:50:42.723 に答える