solr将以导航为目的的查询结果称为facet. 它并不会修改查询结果信息, 只是在查询结果上根据分类添加了count信息, 然后用户根据count信息做进一步的查询, 比如淘宝的查询列表中, 上面会表示不同的类目相关查询结果的数量.
比如搜索数码相机, 在搜索结果栏会根据厂商, 分辨率等维度列出, 这里厂商, 分辨率就是一个个facet.
然后在厂商下面会有nikon, canon, sony等品牌, 这个叫约束(constraints)
接下来是根据选择, 列出当前的导航路径, 这个叫面包屑(breadcrumb).
solr有几种facet:
普通facet, 比如从厂商品牌的维度建立fact
查询facet, 比如根据价格查询时, 将根据价格, 设置多个区间, 比如0-10, 10-20, 20-30等
日期facet, 也是一种特殊的范围查询, 比如按照月份进行facet.
facet的主要好处就是可以任意对搜索条件进行组合, 避免无效搜索, 改善搜索体验.
facet都是在查询时通过参数指定. 比如
在http api中这样写:
引用
"&facet=true&facet.field=manu"
.
java代码这样写:
new SolrQuery("*:*").setFacet(true).addFacetField("manu");
而xml返回的结果为这样:
<lst name="facet_fields">
<lst name="manu">
<int name="Canon USA">17</int>
<int name="Olympus">12</int>
<int name="Sony">12</int>
<int name="Panasonic">9</int>
<int name="Nikon">4</int>
</lst>
</lst>
通过java代码可以这样获取facet结果:
List<FacetField> facetFields = queryResponse.getFacetFields();
在已有的查询基础上增加facet query, 可以这样写:
solrQuery.addFacetQuery("quality:[* TO 10]")
比如对价格按照指定的区间进行facet, 可以这样加上facet后缀:
引用
&facet=true&facet.query=price:[* TO 100]
&facet.query=price:[100 TO 200];&facet.query=[price:200 TO 300]
&facet.query=price:[300 TO 400];&facet.query=[price:400 TO 500]
&facet.query=price:[500 TO *]
如果要对价格在400到500期间的产品做进一步的搜索, 那么可以这样写(使用了solr的过滤查询):
引用
http://localhost:8983/solr/select?q=camera &facet=on&facet.field=manu&facet.field=camera_type &fq=price:[400 to 500]
注意这里的facet field不再包含price了
如果这里对类型做进一步的查询, 那么query语句可以这样写:
引用
http://localhost:8983/solr/select?q=camera &facet=on&facet.field=manu &fq=price:[400 to 500] &fq=camera_type:SLR
facet的使用场景:
1.类目导航
2.自动提示, 需要借助一个支持多值的tag field.
3.热门关键词排行, 也需要借助一个tag field
参考文档:
http://www.lucidimagination.com/devzone/technical-articles/faceted-search-solr
分享到:
相关推荐
Solr 是一个流行的开源搜索引擎,提供了丰富的功能,其中包括 Facet(分面)查询,它能够帮助用户在大量数据中进行高效、多维度的筛选。Facet 查询是数据分析和信息检索中的一个重要工具,允许用户查看数据的不同...
Facet 查询是 Solr 的高级搜索功能之一,可以给用户提供更友好的搜索体验。在搜索关键字的同时,能够按照 Facet 的字段进行分组并统计。下面是对 SolrJ 的 Facet 查询的总结: 一、Facet 简介 Facet 是 Solr 的...
在Solr中,分面查询的结果字段为facet_counts,与responseHeader、response同级。 拼写检查功能允许用户对查询词进行校正,以提供更准确的搜索结果。这通过在solrconfig.xml中配置名为SpellCheckComponent的...
3. Facet查询 4. Group查询 5. 高亮查询 6. Suggest查询 7. SolrJ 章节三:Solr高级(上) 1. Solr Cloud 2. 函数查询 3. 地理位置查询 4. JSON Facet 章节四:Solr高级(下) 1. 深度分页 2. Solr Join查询 3. 相关...
包括部署、配置、Solr Core、Solr DIH、全量导入、增量导入、索引、中文分词、查询组件、Solr Facet、高亮、查询建议,以及企业如何在真实的项目中使用Solr。不仅讲解了基本概念和使用方法,而且还分析了各组件的...
同时,模糊查询和精确查询是Solr查询语言(Lucene Query Parser Syntax)的一部分,它们分别用于处理用户可能输入的不完全匹配或完全匹配的关键词。 模糊查询允许用户使用通配符或近似搜索来找到相似或拼写相近的...
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http G Solr et操作提出查找请求,并得到XML...
Solr的术语部分涉及到了多个与Solr操作相关的概念,例如Auto-warming是指自动预热操作,有助于提高查询性能;Facet指的是查询结果的分组统计功能;Document是指索引中的文档;Field指的是文档中的字段;IndexWriter...
2. 查询价格在0到400之间的商品,返回id、name和price字段,并按类别进行 faceting:`http://localhost:8983/solr/select?q=price:[0%20TO%20400]&fl=id,name,price&facet=true&facet.field=cat` 通过以上步骤,你...
4. **Facet结果解析**:`Facets`接口提供了方法来解析Facet查询的结果,可以获取每个维度的计数,以及根据用户交互更新的Facet筛选条件。 5. **性能优化**:由于Facet计算可能涉及大量数据,因此需要考虑性能优化。...
- **Faceting**:Solr支持字段统计(Faceting),可以通过`facet.field`和`facet.query`参数来实现,帮助用户分析数据分布。 - **统计函数**:通过`stats`参数可以计算字段的统计信息,如平均值、总和、最大值、...
3. **分组查询**:Solr支持基于某个字段的分组查询,可以将搜索结果按照特定字段(如类别、品牌等)进行分组,方便用户查看不同分类下的结果。通过`group.field`参数设置分组字段,`group.ngroups`获取总分组数,`...
3. 统计查询:`facet.query` 可以对任意查询进行计数,如 `http://localhost:8983/solr/my_core/select?q=*:*&facet=true&facet.query={!tag=myTag}taggedQuery`。 七、Solr 高级特性 1. 分词分析:通过配置分析器...
在查询时添加 `facet=true` 和 `facet.field=<field>` 参数即可启用分面。 - **命中高亮(Highlighting)**: Solr 可以在搜索结果中高亮显示匹配的关键词,提高用户体验。通过 `hl=true` 和 `hl.fl=<fields>` 参数...
例如,在使用`facet`和`fq`参数时,合理调整filterCache可以大幅提升性能表现。 ##### 3. 查询结果缓存(queryResultCache) queryResultCache用于缓存查询结果,这里的缓存是针对完全有序的结果集。通过缓存查询...
此外,Solr的Facet功能提供分类搜索,Tika用于解析不同类型的文件,Filter和Spelling组件则处理字符串过滤和拼写检查。 Solr的HTTP接口使得它易于通过各种编程语言(如Ruby、PHP、Java、JSON和JavaScript)进行交互...
在 Solr 中,配置分面导航需要在 schema.xml 文件中定义相关字段,并在查询请求中指定 facet 参数。 在 Solr 中,索引数据通常通过 POST 请求发送到 Solr 服务器,数据格式可以是 XML、JSON 或 CSV。Solr 提供了一...
- 配置facet参数。 - 支持多字段分面。 #### 五、Nginx负载均衡与反向代理 **Nginx**是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 1. **Nginx安装与配置**: - 安装环境准备:...
4. **cl-solr 库的功能**: cl-solr 提供了对 Solr 的全面封装,包括但不限于创建索引、更新文档、删除文档、搜索操作、处理结果集、处理 facet(分面)搜索、拼写检查、同义词等功能。它还可能包含了错误处理和事务...