语境
这是一个主要关于 Lucene(或可能是 Solr)内部的问题。主要主题是分面搜索,其中搜索可以沿着对象的多个独立维度(方面)进行(例如汽车的大小、速度、价格)。
当使用关系数据库实现时,对于大量构面,多字段索引没有用,因为可以按任何顺序搜索构面,因此使用特定有序多索引的机会很小,并且创建索引的所有可能排序是难以忍受。
Solr 被宣传为可以很好地处理分面搜索任务,如果我认为正确的话,它必须与 Lucene 连接(据说)在多字段查询(文档的字段与对象的方面相关)上表现良好。
问题
Lucene的倒排索引可以存储在关系数据库中,自然取匹配文档的交集也可以通过使用单字段索引的 RDBMS 轻松实现。
因此,Lucene 应该有一些用于多字段查询的先进技术,而不仅仅是基于倒排索引获取匹配文档的交集。
所以问题是,这种技术/技巧是什么?更广泛地说:为什么 Lucene/Solr 在理论上可以实现比 RDBMS 更好的多面搜索性能(如果是的话)?
注意:我的第一个猜测是 Lucene 会使用一些空间分区方法来分割从文档字段构建的向量空间作为维度,但据我了解,Lucene 并不是纯粹基于向量空间的。