在搜索中,我们搜索时,通常会自动返回一些相关的搜索。比如,你搜索了一本书,会自动返回作者信息加上他的其它书籍的数量。这种功能在Solr中称之为Facet。不太好翻译。下面对于参数的说明,我以搜索“手机”为例子,比较好说明一点。其中一些属性可能并不适用于中文。我的说明仅仅是举个例子。搜索"手机"时,可能会返回的 facet 结果:
品牌 (20),类型(2),颜色(10)
说明:品牌,类型,颜色就是所说的facet,后面括号里表示数量。品牌(20):有20个品牌。 类型(2):表示有2种类型(智能机和老人机)
参数 | 描述 |
facet | 为TRUE时,启用该功能 |
facet.query | 默认情况下,Solr会自动Facet的field并返回其相关的计数结果 。指定Lucene语法的查询语句,可以覆盖默认行为。 |
facet.field | 指定作为facet的field。比如“品牌” |
facet.prefix | 以此值为前辍的terms才会作为Facet |
facet.contains | 字符串包含此值的terms才会作为Facet |
facet.contains.ignoreCase | 匹配 facet.contains 条件时,忽略大小写 |
facet.sort | 指示Facet结果如何排序。有两个值:1. count -- facet记录数多的排前面 2. index -- 按索引中的次序 |
facet.limit | 限制返回的facet的数量。默认100. 为负数时表示不做限制。e.g. 设置为2的话,只返回品牌、类型和颜色中的2种。 |
facet.offset | 默认0. 一般用于分页时,忽略前面多少个 |
facet.minCount | 设置最小的数量。例如:设置为3时,“类型”将会被抛弃 |
facet.missing | 默认值false. |
facet.method | facet的算法。三个可选值:enum, fc(默认值),fcs |
facet.exists | 用于facet.method=enum的情况 |
facet.excludeTerms | 排除某些terms |
facet.threads | 获得facet的计算的线程数 |
还有另外一种facet,例如价格。需要把不同的价格范围当作 一个facet。此时可以设置 facet.range.