關於搜尋與查詢,首先我們來看一張圖:
這張圖說明了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 ...