代码之家  ›  专栏  ›  技术社区  ›  Bill H

如何获取newegg等每个产品属性/过滤器的总数

  •  1
  • Bill H  · 技术社区  · 15 年前

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

    有些项目有这么多的属性,产品过滤器有这么多不同的配置,他们怎么能这么快计算出所有这些总数呢?

    3 回复  |  直到 15 年前
        1
  •  2
  •   ajreal    15 年前

    对于newegg.com,他们正在使用由 endeca

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

    Endeca不是免费的,开放源码的替代方案如 sphinx lucene solr

        2
  •  1
  •   Jaimie Sirovich    15 年前

    Newegg使用Endeca,他们可能是Endeca早期的客户之一。回想起来,恩德卡可能是他们成功的一大贡献者。分面导航在复杂的电子设备(如计算机部件)上工作得非常好。

    在分面导航中需要考虑以下几点:

    1)您是只希望在类别驱动的查询上使用分面导航,还是也希望它在搜索上工作?实际上,类别是排序的一个层次方面。

    2)Solr的非标准化反向索引模型是否会导致问题?

    如果1)的答案是真的——很可能是真的——你需要一些倒排索引。倒排索引几乎是进行关键字搜索的唯一方法。他们还将做一些警告方面。

    如果2)的答案是真的,那么从OLAP的角度考虑facets可能会更有帮助。我不知道倒排索引是否可以在没有抽象的情况下处理复杂的关系。

    考虑并实现faceted search/nav是全文(通常实现为反向索引)和/或OLAP的混合,这是公平的。

    我很确定你可以用一个列存储完成faceting,但是如果你想要关键字搜索,你仍然需要有一个倒排的索引来合并。

    @丹·格罗斯曼:

    看起来是这样,但是--

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

    再加上多重选择,情况就更糟了。游戏结束。

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

        3
  •  0
  •   Dan Grossman    15 年前

    你不知道他们计算得很快。你只知道他们渲染得很快。他们可能会花费数小时计算这些总数并呈现页面、缓存结果并提供这些静态文件,直到他们希望刷新数据时为止。