`

solr的facet查询

阅读更多
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
分享到:
评论
4 楼 yao-dd 2016-11-27  
   
3 楼 huangyunbin 2013-03-19  
我一直没搞清楚facet查询的意思,我感觉就是group by的意思。
2 楼 zhan19861022 2012-11-15  
我想咨询下,如果用采用Faceted Search,那搜索是否只能一次取出全部集合了,具体分页也只是前台分解数据?
1 楼 huangfoxAgain 2012-02-25  
淘宝的商品分类是人工维护的吧?

然后在采用类似的group by

相关推荐

    solr facet 笔记

    solr facet 笔记

    solrj的facet查询总结

    solrj的facet查询总结

    java进阶Solr从基础到实战

    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权威指南-上卷

    包括部署、配置、Solr Core、Solr DIH、全量导入、增量导入、索引、中文分词、查询组件、Solr Facet、高亮、查询建议,以及企业如何在真实的项目中使用Solr。不仅讲解了基本概念和使用方法,而且还分析了各组件的...

    Solr权威指南-下卷

    包括部署、配置、Solr Core、Solr DIH、全量导入、增量导入、索引、中文分词、查询组件、Solr Facet、高亮、查询建议,以及企业如何在真实的项目中使用Solr。不仅讲解了基本概念和使用方法,而且还分析了各组件的...

    Solr 搜索引擎 asp.net实现 示例详细操作步骤

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http G Solr et操作提出查找请求,并得到XML...

    solr查询语法.pdf

    排序 / 高亮 / facet / spellcheck:拼写检查 / spatial:空间搜索 / 检索运算符:

    solr基础知识介绍

    3.2.2 Facet 3 3.3.3 Document 6 3.3.4 Field 6 3.3.5 IndexWriter 6 3.3.6 IndexSearcher 6 3.3.7 Directory 6 3.3.8 Segment 7 3.3.9 QueryParser 7 3.3.10 Hits 7 4.应用示例 7 4.1 创建索引 7 4.1 删除索引 7 ...

    Solr分组统计

    演示了怎样使用easysolr.net开发facet功能,怎样模糊查询,精确查询。

    Solr 入门资料

    Solr 入门资料 环境配置 facet

    multi-select-facet:Apache Solr,Vue和Go的多选方面示例

    博客文章:运行示例使用运行Solr。 $ make start-solr 或使用docker 。 $ PODMAN=docker make start-solr 运行API // build the api$ go build -v -o api// start the api with the initialization options$ ./api ...

    Go文本索引库Bleve.zip

    Match Phrase, PrefixConjunction, Disjunction, BooleanNumeric Range, Date Range人类条目的简单查询语法tf-idf Scoring默认搜索匹配结果高亮支持聚合 Facets:Terms FacetNumeric Range FacetDate Range Facet ...

    xmlfacets:基于 DjangoHaystack 的 xml 分面浏览应用程序

    在 Django-haystack 中可以使用多种搜索索引系统,例如 Solr 或 ElasticSearch。 安装 xmlfacets 需要 Python 2.7 和 PostgreSQL。 要设置本地开发环境,请安装 并确保您具有以下依赖项 libxml2 libxslt 可选:...

    navigator:Papyrologic Navigator的代码

    pn-dispatcher -Java servlet,用于持久性,检索和显示papyri.info记录曾经由pn-indexer,pn-mapping,pn-lemmas,pn-solr和pn-xslt文件处理过。 这里包含三个servlet: info.papyri.dispatch.browse....

Global site tag (gtag.js) - Google Analytics