.Net 下 Solr 入門學習系列(四)Solr查詢引數整理
.Net 下 Solr 入門學習系列(四)Solr查詢引數整理
solr引數詳解wiki 地址:http://wiki.apache.org/solr/FrontPage
一、基本查詢引數
- q 查詢的關鍵字,此引數最為重要,例如,q=id:1,預設為q=*:*,
- fl 指定返回哪些欄位,用逗號或空格分隔,注意:欄位區分大小寫,例如,fl= id,title,sort
- start 返回結果的第幾條記錄開始,一般分頁用,預設0開始
- rows 指定返回結果最多有多少條記錄,預設值為 10,配合start實現分頁
- sort 排序方式,例如id desc 表示按照 “id” 降序
- wt (writer type)指定輸出格式,有 xml, json, php等
- fq (filter query)過慮查詢,提供一個可選的篩選器查詢。返回在q查詢符合結果中同時符合的fq條件的查詢結果,例如:q=id:1&fq=sort:[1 TO 5],找關鍵字id為1 的,並且sort是1到5之間的。
- df 預設的查詢欄位,一般預設指定。
- qt (query type)指定那個型別來處理查詢請求,一般不用指定,預設是standard。
- indent 返回的結果是否縮排,預設關閉,用 indent=true|on 開啟,一般除錯json,php,phps,ruby輸出才有必要用這個引數。
- version 查詢語法的版本,建議不使用它,由伺服器指定預設值。
二、Solr的檢索運算子引數
- “:” 指定欄位查指定值,如返回所有值*:*
- “?” 表示單個任意字元的通配
- “*” 表示多個任意字元的通配(不能在檢索的項開始使用*或者?符號)
- “~” 表示模糊檢索,如檢索拼寫類似於”roam”的項這樣寫:roam~將找到形如foam和roams的單詞;roam~0.8,檢索返回相似度在0.8以上的記錄。
- AND、|| 布林操作符
- OR、&& 布林操作符
- NOT、!、-(排除操作符不能單獨與項使用構成查詢)
- “+” 存在操作符,要求符號”+”後的項必須在文件相應的域中存在2
- ( ) 用於構成子查詢
- [] 包含範圍檢索,如檢索某時間段記錄,包含頭尾,date:[201507 TO 201510]
- {} 不包含範圍檢索,如檢索某時間段記錄,不包含頭尾date:{201507 TO 201510}
三、高亮引數
- h1 是否高亮,hl=true,表示採用高亮
- hl.fl 設定高亮顯示的欄位,用空格或逗號隔開的欄位列表。要啟用某個欄位的highlight功能,就得保證該欄位在schema中是stored。如果該引數未被給出,那麼就會高亮預設欄位 standard handler會用df引數,dismax欄位用qf引數。你可以使用星號去方便的高亮所有欄位。如果你使用了萬用字元,那麼要考慮啟用hl.requiredFieldMatch選項。
- hl.requireFieldMatch 如果置為true,除非用hl.fl指定了該欄位,查詢結果才會被高亮。它的預設值是false。
- hl.usePhraseHighlighter 如果一個查詢中含有短語(引號框起來的)那麼會保證一定要完全匹配短語的才會被高亮。
- hl.highlightMultiTerm 如果使用萬用字元和模糊搜尋,那麼會確保與萬用字元匹配的term會高亮。預設為false,同時hl.usePhraseHighlighter要為true。
- hl.fragsize 返回的最大字元數。預設是100.如果為0,那麼該欄位不會被fragmented且整個欄位的值會被返回。
四、分組引數
官方wiki解釋地址:http://wiki.apache.org/solr/SimpleFacetParameters#Facet_Fields_and_Facet_Queries,
這是facet的官方wiki,裡面有facet各個引數的詳細說明。所以這裡只說一些常用的。
Facet是Solr的核心搜尋功能,主要是導航(Guided Navigation)、引數化查詢(Paramatic Search)。Facet的主要好處是在搜尋的同時,可以按照Facet條件進行分組統計,給出導航資訊,改善搜尋體驗。
Facet主要分為:Field Facet 和 Date Facet 兩大類
1、Field Facet
facet 引數欄位必須被索引
facet=on 或 facet=true
facet.field 分組的欄位
facet.prefix 表示Facet欄位字首
facet.limit Facet欄位返回條數
facet.offict 開始條數,偏移量,它與facet.limit配合使用可以達到分頁的效果
facet.mincount Facet欄位最小count,預設為0
facet.missing 如果為on或true,那麼將統計那些Facet欄位值為null的記錄
facet.sort 表示 Facet 欄位值以哪種順序返回 .格式為 true(count)|false(index,lex),true(count) 表示按照 count 值從大到小排列,false(index,lex) 表示按照欄位值的自然順序 (字母 , 數字的順序 ) 排列 . 預設情況下為 true(count)
2、Date Facet
對日期型別的欄位進行 Facet. Solr 為日期欄位提供了更為方便的查詢統計方式 .注意 , Date Facet的欄位型別必須是 DateField( 或其子型別 ). 需要注意的是 , 使用 Date Facet 時 , 欄位名 , 起始時間 , 結束時間 , 時間間隔這 4 個引數都必須提供 .
facet.date 該參數列示需要進行 Date Facet 的欄位名 , 與 facet.field 一樣 , 該引數可以被設定多次 , 表示對多個欄位進行 Date Facet.
facet.date.start 起始時間 , 時間的一般格式為 ” 2015-12-31T23:59:59Z”, 另外可以使用 ”NOW”,”YEAR”,”MONTH” 等等 ,
facet.date.end 結束時間
facet.date.gap 時間間隔,如果 start 為 2015-1-1,end 為 2016-1-1,gap 設定為 ”+1MONTH” 表示間隔1 個月 , 那麼將會把這段時間劃分為 12 個間隔段 .
facet.date.hardend 表示 gap 迭代到 end 時,還剩餘的一部分時間段,是否繼續去下一個間隔. 取值可以為 true|false, 預設為 false.
例 start 為 2015-1-1,end 為 2015-12-21,gap 為 ”+1MONTH”, 如果hardend 為 false,則,最後一個時間段為 2015-12-1 至 2016-1-1; 反之,如果 hardend 為 true,則,最後一個時間段為 2015-12-1 至 2015-12-21.
注意:Facet的欄位必須被索引,無需分詞,無需儲存。無需分詞是因為該欄位的值代表了一個整體概念,無需儲存是因為一般而言使用者所關心的並不是該欄位的具體值,而是作為對查詢結果進行分組的一種手段,給出相關的分組資訊,從而改善搜尋體驗。
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- .Net 下 Solr 入門學習系列(一)Solr簡介Solr
- .Net 下 Solr 入門學習系列(二)Solr安裝Solr
- .Net 下 Solr 入門學習系列(三)Solr管理控制檯使用Solr
- .Net 下 Solr 入門學習系列(五)SolrNet的基本使用Solr
- Solr 入門Solr
- Solr複雜查詢一:函式查詢Solr函式
- Solr 客戶端查詢語法Solr客戶端
- solr全文檢索學習Solr
- SpringBoot+solr配置入門Spring BootSolr
- 【搜尋引擎】Solr全文檢索近實時查詢優化Solr優化
- solr研磨之facetSolr
- 後端技術雜談4:Elasticsearch與solr入門實踐後端ElasticsearchSolr
- solr在windows下的安裝及配置SolrWindows
- MySQL入門系列:查詢簡介(五)之子查詢MySql
- ZooKeeper 搭建 solr 叢集Solr
- solr(三)centos7.6安裝配置javasdk1.8及執行solrSolrCentOSJava
- Windows 下 solr8.6 整合 tomcat9.0教程WindowsSolrTomcat
- MySQL入門系列:查詢簡介(二)MySql
- 學習ASP.NET Core Blazor程式設計系列十五——查詢ASP.NETBlazor程式設計
- MySQL入門系列:查詢簡介(七)之組合查詢MySql
- Solr與Spring Boot整合 - ViithiisysSolrSpring Boot
- Solr Transaction Log(Tlog)的作用Solr
- solr研磨之效能調優Solr
- Solr schema編寫指導Solr
- nofile引數的學習與整理
- sql查詢入門練習題SQL
- Solr8 從 MySQL8.0.20中 匯入資料SolrMySql
- solr研磨之遊標分頁Solr
- solr搜尋分詞優化Solr分詞優化
- 學習.NET 8 MiniApis入門API
- 入門MySQL——查詢語法練習MySql
- Solr 18 - 通過SolrJ區域性更新Solr中的文件 (原子操作、非覆蓋操作)Solr
- gRPC入門學習之旅(四)RPC
- JavaScript新手入門學習系列JavaScript
- 將資料庫中資料匯入至solr索引庫資料庫Solr索引
- 使用solr搭建搜尋伺服器Solr伺服器
- 資料庫學習(四)連線查詢資料庫
- webpack入門學習手記(四)Web