如果你去newegg.com(只是一个例子),你会注意到在浏览产品时你可以看到左侧边栏中每个产品属性旁边的项目数。
由于某些项目的属性太多以及产品过滤器的配置太多,他们如何快速计算所有这些总数?
答案 0 :(得分:2)
对于newegg.com,他们使用的是endeca
提供的分面导航技术简而言之,endeca实际上将使用xml / csv中提供的数据或直接从任何数据库(不仅限于mysql)检索数据并计算相似性并将结果分组为自己的格式
Endeca不是免费的,开源替代品,例如sphinx或lucene solr
答案 1 :(得分:1)
在分面导航中需要考虑以下几点:
1)您是否希望在类别驱动的查询上进行分面导航,或者您是否也希望它能够在搜索上工作?事实上,类别是各种各样的等级。
2)Solr的反标准化倒排索引模型是否会导致问题?
如果1)的答案是真的 - 可能是 - 你需要一些反向索引。倒置索引几乎是进行关键字搜索的唯一方法。他们也会面对一些警告。
基本上,您可以将每个方面视为倒排索引(事实上,关键字搜索可能被视为具有排名功能的特殊方面)。那么要计算你必须与当前查询和过滤器相交所有其他构面值。但是,如果需要表示稀疏产品集,此模型可能会导致问题(参见2)。
如果2)的答案是真的,那么在OLAP方面更多地考虑方面可能会有所帮助。我不知道反向索引是否可以在没有抽象的情况下处理复杂的关系。
考虑并实施分面搜索/导航作为全文(通常实现为倒置索引)和/或OLAP的混合,这是公平的。
我非常确定你可以通过专栏商店实现分面,但如果你想要关键字搜索,你还需要有一个倒排索引来合并。
@Dan Grossman:
看起来似乎是这样,但是 -
你有没有想过有多少组合的方面?你无法缓存这么多页面。 Newegg.com上的组合可能比你天空中的星星更多。
添加多项选择,情况更糟。游戏结束。
您只能缓存一些未经过滤和通常过滤的案例。如果你试图在不限制递归水平的情况下蜘蛛Newegg.com,你就会杀死蜘蛛。由于这个原因,分面网站一般会给搜索引擎带来问题。见http://www.searchmarketingstandard.com/facets-navigational-seo-powerhouse-part
答案 2 :(得分:0)
你不知道他们快速计算出来。你只知道他们快速渲染它们。他们可能花费数小时计算这些总数并呈现其页面,缓存结果并提供这些静态文件,直到他们想要刷新数据为止。