【问题标题】:How to get the total count of every product attribute/filter like newegg如何获取每个产品属性/过滤器(如 newegg)的总数
【发布时间】:2010-11-19 06:28:19
【问题描述】:

如果您访问 newegg.com(只是一个示例),您会注意到在浏览产品时您可以在左侧边栏中看到每个产品属性旁边的项目数量。

由于某些商品的属性如此之多,产品过滤器的配置如此之多,他们如何如此快速地计算所有这些总数?

【问题讨论】:

    标签: mysql e-commerce faceted-search


    【解决方案1】:

    对于newegg.com,他们使用endeca提供的分面导航技术

    简而言之,endeca实际上会使用xml/csv中提供的数据或直接从任何数据库(不仅限于mysql)中检索数据并计算相似度并将结果分组为自己的格式

    Endeca 不是免费的,开源替代品,例如 sphinxlucene solr

    【讨论】:

    • 感谢您的回答。我认为他们没有直接查询数据库。我以前使用过狮身人面像,但如果不为每个请求查询 endeca 100(任意估计)时间,我仍然看不到他们是如何做到的。我错过了什么?
    • Sphinx 对于全文搜索来说速度很快,就分面搜索而言,是可能的,但需要更多的配置和测试。您可能可以将所有方面都视为 mysql 中的 GROUP,而 sphinx 非常快。
    • 所以如果我理解正确的话,他们会在每个属性集上运行 GROUP BY 并使用聚合计数函数来获取每个属性中的产品数量?
    • (GROUP BY 只是一个术语)在内部它会涉及大量的数学计算来进行分组、过滤、相似和存储计算结果
    • 谢谢,这很有意义。
    【解决方案2】:

    Newegg 使用 Endeca,他们可能是 Endeca 的早期客户之一。回想起来,Endeca 可能是他们成功的重要贡献者。分面导航非常适用于复杂的电子设备,例如计算机部件。

    在分面导航中需要考虑一些事项:

    1) 您是只想在类别驱动的查询上进行分面导航,还是还希望它在搜索中起作用?事实上,类别是排序的一个层次方面。

    2) Solr 的反规范化倒排索引模型会给您带来问题吗?

    如果 1) 的答案是正确的——它可能是——你将需要一些倒排索引。倒排索引几乎是进行关键字搜索的唯一方法。他们还会做一些注意事项。

    基本上您可以将每个方面视为一个倒排索引(事实上,关键字搜索可能被视为具有排名功能的特殊方面)。然后要进行计数,您必须将当前查询和过滤器与所有其他方面值相交/相交。但是,如果您需要表示稀疏产品集(参见 2),此模型可能会导致问题。

    如果 2) 的答案是正确的,那么更多地考虑 OLAP 方面的方面可能会更有帮助。我不知道倒排索引是否可以在没有一些抽象的情况下处理复杂的关系。

    考虑并实现分面搜索/导航作为全文(通常实现为倒排索引)和/或 OLAP 的混合是公平的。

    我很确定您可以使用列存储实现分面,但如果您想要关键字搜索,您仍然需要有一个倒排索引可供您使用。

    @丹格罗斯曼:

    看起来是这样,但是——

    你有没有想过刻面有多少种组合?你不能像那样缓存这么多页面。 Newegg.com 上的组合可能比你天空中的星星还多。

    添加多项选择,情况更糟。游戏结束。

    您只能缓存某些情况,例如未过滤和通常过滤。如果你试图在不限制递归级别的情况下爬取 Newegg.com,你会杀死蜘蛛。由于这个原因,多面网站通常会给搜索引擎带来问题。见http://www.searchmarketingstandard.com/facets-navigational-seo-powerhouse-part

    【讨论】:

    • 优秀的破败。谢谢。
    【解决方案3】:

    您不知道他们计算速度很快。你只知道它们渲染速度很快。他们可能会花费数小时计算这些总数并呈现他们的页面,缓存结果并提供这些静态文件,直到他们想要刷新数据的某个时间。

    【讨论】:

    • 我会买那个(很可能就是这样),但是 magento 具有相同的功能,所以我认为它是实时发生的(或者至少是实时发生的)页面被缓存)。
    • 不幸的是不是,他们对 endeca 执行实时查询。同样,endeca 不是免费的。
    • 这不是重点。新蛋只是一个例子。我要指出的是,购买 Endeca 并不是快速渲染复杂事物的唯一方法——您可以慢慢计算并缓存结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    相关资源
    最近更新 更多