1. 程式人生 > >Node.js從入門到實戰(七)Solr查詢規則總結

Node.js從入門到實戰(七)Solr查詢規則總結

一、Solr

Solr是一個獨立的企業級搜尋應用伺服器,它對外提供類似於Web-service的API介面。使用者可以通過http請求,向搜尋引擎伺服器提交一定格式的XML檔案,生成索引;也可以通過Http Get操作提出查詢請求,並得到XML格式的返回結果

本文不涉及Solr環境的搭建過程中,主要關注Solr的查詢語法,Solr搭建完成後如下:


二、Solr查詢規則

名稱

描述

q

查詢字串,必須的。

fq

filter query。使用Filter Query可以充分利用Filter Query Cache,提高檢索效能。作用:在q查詢符合結果中同時是fq查詢符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找關鍵字mm,並且date_time是20081001到20091031之間的。

fl

field list。指定返回結果欄位。以空格“ ”或逗號“,”分隔。

start

用於分頁定義結果起始記錄數,預設為0

rows

用於分頁定義結果每頁返回記錄數,預設為10

sort

排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,預設是相關性降序。

df

預設的查詢欄位,一般預設指定。

q.op

覆蓋schema.xml的defaultOperator(有空格時用"AND"還是用"OR"操作邏輯),一般預設指定。必須大寫

wt

writer type。指定查詢輸出結構格式,預設為“xml”。在solrconfig.xml中定義了查詢輸出格式:xml、json、python、ruby、php、phps、custom。

qt

query type,指定查詢使用的Query Handler,預設為“standard”。

explainOther

設定當debugQuery=true時,顯示其他的查詢說明。

defType

設定查詢解析器名稱。

timeAllowed

設定查詢超時時間。

omitHeader

設定是否忽略查詢結果返回頭資訊,預設為“false”。

indent

返回的結果是否縮排,預設關閉,用 indent=true|on 開啟,一般除錯json,php,phps,ruby輸出才有必要用這個引數。

version

查詢語法的版本,建議不使用它,由伺服器指定預設值。

debugQuery

設定返回結果是否顯示Debug資訊。

三、Solr查詢操

Solr的檢索運算子

  “:”  指定欄位查指定值,如返回所有值*:*

  “?”  表示單個任意字元的通配

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

  “~”  表示模糊檢索,如檢索拼寫類似於”roam”的項這樣寫:roam~將找到形如foamroams的單詞;roam~0.8,檢索返回相似度在0.8以上的記錄。

  AND、||  布林操作符

  OR、&&  布林操作符

  NOT、!、-(排除操作符不能單獨與項使用構成查詢)

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

  ( )  用於構成子查詢

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

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

四、Solr查詢示例

1. 查詢所有

http://localhost:8080/solr/primary/select?q=*:*


2. 限定返回欄位
http://localhost:8080/solr/primary/select?q=*:*&fl=productId
表示:查詢所有記錄,只返回productId欄位
3. 分頁
http://localhost:8080/solr/primary/select?q=*:*&fl=productId&rows=6&start=0
表示:查詢前六條記錄,只返回productId欄位
4. 增加限定條件
http://localhost:8080/solr/primary/select?q=*:*&fl=productId&rows=6&start=0&fq=category:2002&fq=namespace:d&fl=productId+category&fq=en_US_city_i:1101
表示:查詢category=2002、en_US_city_i=110以及namespace=d的前六條記錄,只返回productId和category欄位
5. 新增排序
http://localhost:8080/solr/primary/select?q=*:*&fl=productId&rows=6&start=0&fq=category:2002&fq=namespace:d&sort=category_2002_sort_i+asc
表示:查詢category=2002以及namespace=d並按category_2002_sort_i升序排序的前六條記錄,只返回productId欄位