0

リソースで太陽黒点 (solr) 検索を実行し、現在のユーザーがお気に入りのリソースで結果をフィルタリングしています。これは以下のコードを使用して完全に機能しますが、結果を並べ替えて、ユーザーがそのアイテムをお気に入りに追加したときに表示するように要求されました (別名、お気に入りモデルで作成された日付)。ユーザー固有の日付を維持しながら、それを検索に統合する方法がわかりません。どんなアイデアや解決策も大歓迎です。

class Resource < ActiveRecord::Base
  has_many :favorites
  has_many :favorite_users, through: :favorites

  searchable do
    text :title
    ...
    integer :favorite_user_ids, references: User, multiple: true
  end

  def self.full_search(params={}, current_user)
    search = Resource.search do
      keywords params[:term]
      with(:favorite_user_ids, current_user.id) if params[:filter] == 'favorite'
    end
    search
  end
end
4

1 に答える 1

0

created_atああ、問題がわかりました。インデックスを作成しているモデルの 1 つではなく、JOINED モデルの日付で並べ替える必要があります。

太陽黒点のインデックス付けをリソースではなく、お気に入りのモデルに移動した場合はどうなるでしょうか? これにより、リソースのタイトルが複数回索引付けされることになりますが...

このようなもの:

class Favorite
  belongs_to :resource
  belongs_to :user

  searchable do
    text :resource_title do
      resource.title
    end
    integer :user_id do
      user.id
    end
  end
end

次に、次の検索方法を使用できます。

if params[:filter] == 'favorite'
  Favorite.search do
    keywords params[:term]
    with(:user_id, current_user.id)
    order_by(:created_at, :desc)
  end
end
于 2013-10-18T01:24:57.220 に答える