我有一个产品表和变种表
Product - title, description, id
Variant - id, product_id, size_label, qty, price
Product has_many variants
Variant belongs_to product
我已将我的产品索引定义为
ThinkingSphinx::Index.define :product, :with => :active_record, delta: true do
indexes title, facet: true
indexes variants.size_label, as: :sizelabel, facet: true
has variants.id, as: :variant_ids
has variants.qty, as: :variant_qty
end
如果我的产品有5个变体,例如size_label S,M,L,XL,XXL那么sizelabel facet将返回为一个字符串“S M L XL XXL”
我是否设置了错误的索引 - 期望将变体作为单独的散列返回(与其他方面一样)
使用Rails 3.2.19,Sphinx 2.1.9,思考Sphinx 3.1.1
答案 0 :(得分:1)
如果字段是聚合(对于您的大小标签字段都是如此),则这些值将作为单个字符串连接在一起,因为Sphinx只能理解字段的单个字符串值,而不是数组。
此外,值得注意的是,虽然Sphinx支持单字符串值属性和多值整数/时间戳/ bigint属性,但不是多值字符串属性。所以,我建议如下:将大小标签拉出到一个单独的表中,然后在Variant模型中使用size_label_id。然后,添加以下属性:
has variants.size_label_id, as: :size_label_ids, facet: true
当您获得结果时,您需要将它们翻译成有意义的文本。我应该有用written some code(尽管可能需要进行一些调整)。