zzzhc's Blog

stay curious

Solr Faceted Search

从用户角度看,faceted search把搜索结果分入多个类别(一般还会显示各个类别下有多少结果),并允许用户分类别查看。在电子商务类网站经常可以看到,如

FacetFields有两种,枚举型和分词型。枚举型适合类别比较少的场景,如卓越。分词型适合于类别很多,但每个document所属的类别较少的情况。Facet field不需要定义成stored,但需要是indexed. facet主要是用在drill-down到搜索结果的一个子集,实际查询是会生成一个对应类别的filter query.

实现原理,枚举型与分词型有些区别

  • 枚举型,遍历field的所有terms, 得到各个term对应的document BitSet, 这个结果与query result作与
  • 分词型,遍历搜索结果中的每个document, 从field cache里得到它对应的terms, 累加terms出现次数

Comments