Lucene 搜索电子商务 - 在每个类别中订购产品
Lucene search for ecommerce - order products in each category
我正在使用 Lucene 作为电子商务应用程序的 indexing/searching 产品目录。
一个产品可以映射到任意数量的类别。
我们需要为每个类别中列出的产品维护默认排序顺序。因此,对于每个映射的类别,产品可能具有不同的订单索引。
在类别中搜索产品列表时,如何使用默认排序顺序对映射的产品进行排序?
您可以通过为每个排序顺序设置一个单独的字段来实现这一点,例如 category_motherboards_sort
带有该文档的索引值。这里唯一的问题是你必须小心你排序的总字段数,因为一段时间后你可能会得到一个非常大的 FieldCache - 但具体如何工作将取决于你的 Lucene 版本重新使用。使用 DocValues 应该可以减轻大部分成本。
如果这仍然是一个问题,您通常可以通过检索该类别的所有文档来解决它,然后在您的应用程序层中进行排序。这适用于非常稀疏的字段,其中该字段仅占文档总数的一小部分。
我会先尝试第一个选项并分析内存使用情况,然后在必要时实施另一个选项。
我正在使用 Lucene 作为电子商务应用程序的 indexing/searching 产品目录。
一个产品可以映射到任意数量的类别。
我们需要为每个类别中列出的产品维护默认排序顺序。因此,对于每个映射的类别,产品可能具有不同的订单索引。
在类别中搜索产品列表时,如何使用默认排序顺序对映射的产品进行排序?
您可以通过为每个排序顺序设置一个单独的字段来实现这一点,例如 category_motherboards_sort
带有该文档的索引值。这里唯一的问题是你必须小心你排序的总字段数,因为一段时间后你可能会得到一个非常大的 FieldCache - 但具体如何工作将取决于你的 Lucene 版本重新使用。使用 DocValues 应该可以减轻大部分成本。
如果这仍然是一个问题,您通常可以通过检索该类别的所有文档来解决它,然后在您的应用程序层中进行排序。这适用于非常稀疏的字段,其中该字段仅占文档总数的一小部分。
我会先尝试第一个选项并分析内存使用情况,然后在必要时实施另一个选项。