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