solr6 6初探之查詢篇

2021-09-20 08:26:11 字數 2150 閱讀 2484

關於搜尋與查詢,首先我們來看一張圖:

這張圖說明了solr查詢原理:

1.當通過solr發起查詢的時候,引擎會選擇乙個requesthandler(從字面意思上來說就是請求處理器)來進行查詢處理

2.查詢的請求處理器會選擇乙個查詢解析器來解析查詢引數(語法

3.solr會根據查詢列在索引中搜尋儲存字段,預設是全部

4.根據偏移量及資料量(start,rows)對資料進行篩選,類似於mysql的limit

5.將篩選結果進行一次filter(過濾) ,最終將結果作為搜尋響應的一部分。過濾查詢分配乙個單獨的快取通過fq將大大提高查詢效能

6.最後將使用乙個responsewriter來將搜尋結果輸出到客戶端

二.常見的查詢語法總結:

一.基本查詢

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、!、-(排除操作符不能單獨與項使用構成查詢)

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

( )  用於構成子查詢

包含範圍檢索,如檢索某時間段記錄,包含頭尾,date:[201507 to 201510]

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

三. 高亮

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且整個欄位的值會被返回。

Docker初探之Windows篇

一 什麼是docker?docker是乙個開源的應用容器引擎,可以輕鬆地為任何應用建立乙個輕量級 可移植 自給自足的容器。開發者在本地編譯測試通過的容器可以批量地在生產環境中部署,包括虛擬機器和其他平台。我們可以將自己的應用以及依賴的環境一起打包到乙個容器中,然後這個容器就可以很容易的放到其他機器上...

Solr分組聚合查詢之Facet

摘要 solr的分組聚合是乙個籠統的概念,目的就是把查詢結果做分類,有多種方式可以做到很類似的結果。也正是由於它們的不同表現,可以適合於多種場景。facet是一種手段,用來將搜尋結果分類,它並不會修改查詢結果資訊,只是給分類後的結果加上了每一項的數量值。我們可以用facet來做導航欄,引導使用者更精...

LINUX 指令篇之查詢

find 搜尋路徑 選項 選項說明 name 按檔名搜尋 user 按使用者查詢 size 按檔案大小查詢 例子 說明find name c 查詢當前目錄下所有c檔案 find user root 查詢當前目錄下root 使用者的所有檔案 find size 20m 查詢當前目錄下檔案大小 20m ...