使用索引排序加速合取查询
索引排序可以用于组织 Lucene 文档 ID(不要与 _id 混淆),使合取查询(a AND b AND …)更高效。为了高效,合取查询依赖于这样一个事实:如果任何一个子句不匹配,则整个合取都不匹配。通过使用索引排序,我们可以将不匹配的文档放在一起,这有助于高效地跳过不匹配合取查询的大范围文档 ID。
这个技巧只适用于低基数字段。一个经验法则是,你应该优先按既具有低基数又经常用于过滤的字段排序。排序顺序(升序或降序)并不重要,因为我们只关心将匹配相同子句的值放在一起。
例如,如果你正在索引待售汽车,按燃料类型、车身类型、品牌、注册年份,最后按里程排序可能会很有用。