类别has_many产品。
在category_index我定义:
indexes :title
has products(:id), :as => :product_ids
在product_index我定义:
indexes :title
在搜索者课程中:
product_ids = Product.search_for_ids('word', with: {user_id: 5})
categories = Category.search('word')
categories_where_products_match = Category.search(with: {product_ids: products_ids})
如何将categories
和categories_where_products_match
合并到一个ThinkingSphinx::Search
对象中?
答案 0 :(得分:1)
对于您在此处尝试执行的操作,只有在搜索“产品”时才会起作用。您的类别索引可以包含许多产品标题和许多产品用户ID,但是没有散列或字典的概念,因此Sphinx无法将两个单独的集合链接在一起。
这样的索引应该可以解决问题:
ThinkingSphinx::Index.define :product, with: :active_record do
indexes title
has user_id
end
然后搜索:
Product.search 'word', with: {user_id: 5}
如果您想获得与此匹配的类别,那么我建议您将以下属性添加到类别索引定义中:
has products.id, as: :product_ids
然后搜索时:
product_ids = Product.search_for_ids 'word', with: {user_id: 5}
categories = Category.search with: {product_ids: product_ids}