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