【问题标题】:Solr - Indexing products with attributes as Key / Value pairSolr - 将属性索引为键/值对的产品
【发布时间】:2014-02-08 20:33:03
【问题描述】:

我目前正在考虑开发一个 solr 应用程序来索引我们电子商务网站上的产品。

架构中的一些示例字段是:

  • 产品ID
  • 产品名称
  • 说明
  • 价格
  • 类别(多值)
  • 属性

属性是键值对的列表。 例如:

类型 = 玫瑰
位置 = 充满阳光
位置 = 阴影
颜色 = 红色

我将存储这些字段,以便可以从搜索结果中生成我的页面。

如何最好地表示这些?

我在考虑也许有一些用于索引的动态字段: 属性_* 例如 (attribute_position) 然后是存储值的“属性”(用于返回,用于显示) - 存储多个字段 “属性”字段的值可以是(例如)Position|Full Sun - 然后让客户端处理显示?

有没有更好的方法?

作为脚注-我将使用 Solrnet 作为客户端进行查询(可能不相关)

【问题讨论】:

    标签: solr


    【解决方案1】:

    首先,我不建议您将整个文档存储在搜索引擎中。您应该在 Solr 中存储的唯一内容是您希望搜索的内容。是的,它支持存储更多,但是,利用这一点可能会导致索引大小、主/从复制时间等问题。理想情况下,Solr 中唯一的东西是您希望搜索/排序的内容和文档ID 足够唯一,可以从另一个为存储 .... 文档而优化的来源获取文档数据。

    但是,如果您决定忽略此建议,则可以轻松地将名称值对存储在单个字段中。如果您的名称值对具有有限的字符集,您可以轻松地将名称值对连接成一个字符串。然后,在您形成要显示的网页时,在输出时解析它们。无需提出更复杂的架构来支持这一点。用于存储这些的多个字段只会增加您的索引开销,这对您没有任何好处。

    【讨论】:

    • 是的,我知道存储数据以供检索和索引它是不“明智的”,但是我们将(最多)8000 个文档(可能大约是其中的一半)都相当小 - 甚至此数据的原始 CSV 远低于 100mb 这种连接字符串的方法是否允许搜索?例如,选择颜色 = 红色的产品?
    • 不,这样做效果不好。我只是认为您想存储此名称/值对数据以用于文档显示目的,而不是用于索引。我误解了。在这种情况下,您可能希望在搜索方面使用动态字段,然后按照我建议的方式存储字符串以重构文档以供显示。通常最好将搜索和显示关注点分开存储,即使它在搜索索引中。
    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2014-07-04
    • 1970-01-01
    • 2016-12-20
    相关资源
    最近更新 更多