亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

solr4.7分組查詢facet怎么使用

發布時間:2021-12-22 17:37:21 來源:億速云 閱讀:177 作者:iii 欄目:互聯網科技

本篇內容主要講解“solr4.7分組查詢facet怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“solr4.7分組查詢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代碼 solrj這樣寫: 

   query.setFacet(true);//是否分組查詢
   query.setRows(0);//設置返回結果條數,如果你時分組查詢,你就設置為0
   query.addFacetField("region");//增加分組字段   q
   query.addFacetField("theme");//增加分組字段   q
   QueryResponse rsp = server.query(query);
   //取出結果  
   FacetField facetField = rsp.getFacetField("region");
   List<Count> counts = null;
   if (facetField != null) {
     counts = facetField.getValues();
     if (counts != null) {
      for (Count count : counts) {
       if (count.getCount() != 0) {
        listRegion.add(count.getName()+"("+count.getCount()+")");
      }
      }
      map.put("region", listRegion);
     }
   }
   
   FacetField facetFieldTheme = rsp.getFacetField("theme");
   List<Count> countsTheme = null;
   if (facetFieldTheme != null) {
    countsTheme = facetFieldTheme.getValues();
     if (countsTheme != null) {
      for (Count count : countsTheme) {
         if (count.getCount() != 0) {
        listTheme.add(count.getName()+"("+count.getCount()+")");
      }
      }
      map.put("theme", listTheme);
     }
   }

而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 

到此,相信大家對“solr4.7分組查詢facet怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

琼海市| 尚志市| 太谷县| 武陟县| 洛隆县| 景泰县| 于都县| 佛冈县| 宿松县| 偏关县| 聂拉木县| 镇雄县| 洮南市| 嵊泗县| 湘西| 博罗县| 五寨县| 义乌市| 万盛区| 景东| 浦县| 旬邑县| 通道| 葫芦岛市| 衡阳县| 麻栗坡县| 方正县| 将乐县| 林口县| 甘洛县| 海原县| 新和县| 安仁县| 凌海市| 岳西县| 克拉玛依市| 洛川县| 射阳县| 中卫市| 龙陵县| 安吉县|