Lucene 搜索电子商务 - 在每个类别中订购产品

Lucene search for ecommerce - order products in each category

我正在使用 Lucene 作为电子商务应用程序的 indexing/searching 产品目录。

一个产品可以映射到任意数量的类别。

我们需要为每个类别中列出的产品维护默认排序顺序。因此,对于每个映射的类别,产品可能具有不同的订单索引。

在类别中搜索产品列表时,如何使用默认排序顺序对映射的产品进行排序?

您可以通过为每个排序顺序设置一个单独的字段来实现这一点,例如 category_motherboards_sort 带有该文档的索引值。这里唯一的问题是你必须小心你排序的总字段数,因为一段时间后你可能会得到一个非常大的 FieldCache - 但具体如何工作将取决于你的 Lucene 版本重新使用。使用 DocValues 应该可以减轻大部分成本。

如果这仍然是一个问题,您通常可以通过检索该类别的所有文档来解决它,然后在您的应用程序层中进行排序。这适用于非常稀疏的字段,其中该字段仅占文档总数的一小部分。

我会先尝试第一个选项并分析内存使用情况,然后在必要时实施另一个选项。