Solr查詢詳解

2021-09-08 10:12:25 字數 3137 閱讀 1398

這節重點是講solr的查詢相關的知識點

一、 查詢引數說明

在做solr查詢的時候,solr提供了很多引數來擴充套件它自身的強大功能!以下是使用頻率最高的一些引數! 

1、常用 

q- 查詢字串,這個是必須的。如果查詢所有*:*,根據指定字段查詢(name:張三 and address:北京

fq- (filter query)過慮查詢,作用:在q查詢符合結果中同時是fq查詢符合的,例如:q=name:張三&fq=createdate:[20081001 to 20091031],找關鍵字mm,並且createdate是20081001

fl- 指定返回那些字段內容,用逗號或空格分隔多個。 

start- 返回第一條記錄在完整找到結果中的偏移位置,0開始,一般分頁用。 

rows- 指定返回結果最多有多少條記錄,配合start來實現分頁。 

sort- 排序,格式:sort=+[,+]… 。示例:(score desc, price asc)表示先 「score」 降序, 再 「price」 公升序,預設是相關性降序。 

wt- (writer type)指定輸出格式,可以有xml,json,php,phps。 

fl表示索引顯示那些field(*表示所有field,如果想查詢指定欄位用逗號或空格隔開(如:name,sku,shortdescription或name sku shortdescription【注:欄位是嚴格區分大小寫的】)) 

q.op表示q 中 查詢語句的 各條件的邏輯操作 and(與) or(或) 

hl是否高亮 ,如hl=true

hl.fl高亮field ,hl.fl=name,sku

hl.snippets:預設是1,這裡設定為3個片段

hl.******.pre高亮前面的格式 

hl.******.post高亮後面的格式 

facet是否啟動統計 

facet.field統計field 

【注:以上是比較常用的引數,當然具體的引數使用還是多看solr官方的技術文件以及一些大神的博文日誌,這裡只是拋磚引玉】

二、 solr運算子

1. 「:」 指定字段查指定值,如返回所有值*:*

2. 「?」 表示單個任意字元的通配

3. 「*」 表示多個任意字元的通配(不能在檢索的項開始使用*或者?符號)

4. 「~」 表示模糊檢索,如檢索拼寫類似於」roam」的項這樣寫:roam~將找到形如foam和roams的單詞;roam~0.8,檢索返回相似度在0.8以上的記錄。

5. 鄰近檢索,如檢索相隔10個單詞的」apache」和」jakarta」,」jakarta apache」~10

6. 「^」 控制相關度檢索,如檢索jakarta apache,同時希望去讓」jakarta」的相關度更加好,那麼在其後加上」^」符號和增量值,即jakarta^4 apache

7. 布林操作符and、||

8. 布林操作符or、&&

9. 布林操作符not、!、- (排除操作符不能單獨與項使用構成查詢)

10. 「+」 存在操作符,要求符號」+」後的項必須在文件相應的域中存在

11. ( ) 用於構成子查詢

12. 包含範圍檢索,如檢索某時間段記錄,包含頭尾,date:[200707 to 200710]

13. {} 不包含範圍檢索,如檢索某時間段記錄,不包含頭尾

date:

14. / 轉義操作符,特殊字元包括+ - && || ! ( ) [ ] ^ 」 ~ * ? : /

注:①「+」和」-「表示對單個查詢單元的修飾,and 、or 、 not是對兩個查詢單元是否做交集或者做差集還是取反的操作的符號

比如:ab:china +ab:america,表示的是ab:china忽略不計可有可無,必須滿足第二個條件才是對的,而不是你所認為的必須滿足這兩個搜尋條件

如果輸入:ab:china and ab:america ,解析出來的結果是兩個條件同時滿足,即+ab:china and +ab:america或+ab:china +ab:america

三、 solr查詢語法

1.最普通的查詢,比如查詢姓張的人(name:張),如果是精準性搜尋相當於sql server中的like搜尋這需要帶引號(""),比如查詢含有北京的(address:"北京")

2.多條件查詢,注:如果是針對單個字段進行搜尋的可以用(name:搜尋條件加運算子(or、and、not) name:搜尋條件),比如模糊查詢(name:張 or name:李)單個欄位多條件搜尋不建議這樣寫,一般建議是在單個欄位裡進行條件篩選,如(name:張 or 李),多個字段查詢(name:張 + address:北京

3.排序,比如根據姓名公升序(name asc),降序(name desc

Solr查詢詳解

一 查詢引數說明 在做solr查詢的時候,solr提供了很多引數來擴充套件它自身的強大功能!以下是使用頻率最高的一些引數!1 常用 q 查詢字串,這個是必須的。如果查詢所有 根據指定字段查詢 name 張三 and address 北京 fq filter query 過慮查詢,作用 在q查詢符合結...

solr原理詳解

solr對外提供標準的http介面來實現對資料的索引的增加 刪除 修改 查詢。在 solr 中,使用者通過向部署在servlet 容器中的 solr web 應用程式傳送 http 請求來啟動索引和搜尋。solr 接受請求,確定要使用的適當solrrequesthandler,然後處理請求。通過 h...

solr查詢語法

首先假設我的資料裡fields有 name,subbranch,tel,address 預設的搜尋是name這個字段,如果要搜尋的資料剛好就是 name 這個字段,就不需要指定搜尋欄位名稱.2.查詢規則 如欲查詢特定字段 非預設字段 請在查詢詞前加上該欄位名稱加 不包含 號 符號,例如 addres...