0

类别 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})

如何合并categoriescategories_where_products_match成一个ThinkingSphinx::Search对象?

4

1 回答 1

1

对于您在这里尝试做的事情,它只会在搜索产品时起作用。您的 Category 索引可以有许多产品标题和许多产品用户 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}
于 2013-10-06T05:42:46.830 回答