当前位置: 首页 > elasticsearch, 搜索 > 正文

elasticsearch facet search实例

1 星2 星3 星4 星5 星 (1 次投票, 评分: 4.00, 总分: 5)
Loading ... Loading ...
baidu_share

分面搜索(Facet Search):分面是指事物的多维度属性。例如一本书包含主题、作者、年代等分面。而分面搜索是指通过事物的这些属性不断筛选、过滤搜索结果的方法。可以将分面搜索看成搜索和浏览的结合。

应用场景:分面搜索作为一种有效的搜索方式,已经被用在电子商务、音乐、旅游等多个方面。

概念可能不好理解,直接来个图就能让你明白。
facetedsearch

分面搜索就是在一个搜索查询条件下,对某个字段进行统计。例如,在上衣这个大类下,有衬衫,马甲等分类。分面搜索就是在在上衣这个大类下,对衬衫,马甲数量统计。

分面搜素的优势
  1.分面搜索支持用户根据自己的需要选取不同的分面进行筛选,而不必按照网站预先设定的单一方式寻找。
  2.分面搜索允许用户自己创建搜索路径,并且可以随时扩大和缩小结果范围。
  3.分面搜索只展现有对应结果的选项,避免了无搜索结果的情况。并且一般在搜索前提示用户该选项内包含的结果数量,给用户良好的操作前提示。

在elasticsearch下facetsearch用法。

QueryStringQueryBuilder queryBuilder = new QueryStringQueryBuilder("中国");
queryBuilder.analyzer("ik").field("title").field("content");
 
SearchResponse searchResponse = esClient.prepareSearch(searchParam.getIndexName())
 
                        .setQuery(queryBuilder)
                        .addFacet(FacetBuilders.termsFacet("termFacet").fields("catid"))
                        .setScroll(new TimeValue(60000))
                        .addFields("id","channelid","catid","model","title","content","thumb","url","updatetime")
                        .addSort("_score", SortOrder.DESC)
                        .addSort("updatetime", SortOrder.DESC)
                        .addHighlightedField("title")
                        .addHighlightedField("content",72,3)
                        .setHighlighterEncoder("UTF-8")
                        .setFrom(0)
                        .setSize(5)
                        .execute()
                        .actionGet();
 
        TermsFacet f = (TermsFacet) searchResponse.getFacets().facetsAsMap().get("termFacet");
 
        f.getTotalCount();      // Total terms doc count
        f.getOtherCount();      // Not shown terms doc count
        f.getMissingCount();    // Without term doc count
 
        // For each entry
        for (TermsFacet.Entry entry : f) {
            System.out.println(entry.getTerm() +"    count:"+entry.getCount());
            //entry.getTerm()为catid,分类id
            //entry.getCount()为该分类下的数量
        }

参考地址:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/java-facets.html#_facets

本文固定链接: http://www.chepoo.com/elasticsearch-facet-search-example.html | IT技术精华网

elasticsearch facet search实例:等您坐沙发呢!

发表评论