【问题标题】:Thinking Sphinx and facets思考狮身人面像和刻面
【发布时间】:2014-10-03 06:50:58
【问题描述】:

我有一个产品表和一个变体表

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 方面将作为一个字符串“S M L XL XXL”返回

我是否设置了错误的索引 - 期望变体作为单独的哈希返回(就像其他方面一样)

使用 Rails 3.2.19、Sphinx 2.1.9、Thinking Sphinx 3.1.1

【问题讨论】:

    标签: ruby-on-rails thinking-sphinx


    【解决方案1】:

    如果字段是聚合的(您的尺寸标签字段也是如此),则这些值将作为单个字符串连接在一起,因为 Sphinx 只理解字段的单个字符串值,而不是数组。

    另外,值得注意的是,虽然 Sphinx 确实支持单字符串值属性和多值整数/时间戳/大整数属性,但 多值字符串属性。因此,我的建议如下:将尺寸标签拉出到一个单独的表中,然后在您的 Variant 模型中使用 size_label_id 。然后,添加以下属性:

    has variants.size_label_id, as: :size_label_ids, facet: true
    

    当您获得分面结果后,您需要将它们翻译成有意义的文本。我有 written some code 这应该很有用(尽管可能需要一些调整)。

    【讨论】:

    • 感谢@pat 工作得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多