Solr 查詢語法

因爲 Solr 內部實現查詢語句的語法語義分析使用比較成熟的工具 Javacc,因此 Solr 支持的查詢語法仍是很豐富的,Solr 查詢語法能夠總結以下:php

Solr 查詢不管是 Solrj 操做仍是直接發送請求給 Solr 服務器,原理都是同樣的,本質上都是發送 http 請求給 Solr 服務器,不過與 Solrj 操做 Solr 服務器不一樣,Solr 查詢能夠按照各類各樣的形式返回結果,好比重要的 Json 格式,能夠實現 Ajax 動態顯示數據效果。html

首先說一下 Solr 查詢語法的特色(就是普通的 get 請求,k=v)apache

1、當 k 是 q 的時候,表示查詢條件,具體咱們來看看這個 k 的 v 怎麼寫? 假設咱們已經爲三個 filed (name,addr,tel,time)創建了索引,咱們應該怎麼查詢咱們想要的數據呢?json

1:指定域查詢 域名:加上查詢條件(好比 name:clebeg) 也能夠指定所有 用關鍵詞 allruby

二 、查詢參數服務器

<!-- lang: html -->
經常使用

q – 查詢字符串,必須的。
fl – 指定返回那些字段內容,用逗號或空格分隔多個。
start – 返回第一條記錄在完整找到結果中的偏移位置,0開始,通常分頁用。
rows – 指定返回結果最多有多少條記錄,配合start來實現分頁。
sort – 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 「inStock」 降序, 再 「price」 升序,默認是相關性降序。
wt – (writer type)指定輸出格式,能夠有 xml, json, php, phps, 後面 solr 1.3增長的,要用通知咱們,由於默認沒有打開。
fq – (filter query)過慮查詢,做用:在q查詢符合結果中同時是fq查詢符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找關鍵字mm,而且date_time是20081001到20091031之間的。官方文檔:http://wiki.apache.org/solr/CommonQueryParameters
不經常使用

q.op – 覆蓋schema.xml的defaultOperator(有空格時用」AND」仍是用」OR」操做邏輯),通常默認指定
df – 默認的查詢字段,通常默認指定
qt – (query type)指定那個類型來處理查詢請求,通常不用指定,默認是standard。
其它

indent – 返回的結果是否縮進,默認關閉,用 indent=true|on 開啓,通常調試json,php,phps,ruby輸出纔有必要用這個參數。
version – 查詢語法的版本,建議不使用它,由服務器指定默認值。
[Solr的檢索運算符]
「:」 指定字段查指定值,如返回全部值*:*²
「?」²表示單個任意字符的通配
「*」 表示多個任意字符的通配(不能在檢索的項開始使用*或者?符號)²
「~」²表示模糊檢索,如檢索拼寫相似於」roam」的項這樣寫:roam~將找到形如foam和roams的單詞;roam~0.8,檢索返回類似度在0.8以上的記錄。
²鄰近檢索,如檢索相隔10個單詞的」apache」和」jakarta」,」jakarta apache」~10
「^」²控制相關度檢索,如檢索jakarta apache,同時但願去讓」jakarta」的相關度更加好,那麼在其後加上」^」符號和增量值,即jakarta^4 apache
布爾操做符AND、||²
布爾操做符OR、²&&
布爾操做符NOT、!、-²(排除操做符不能單獨與項使用構成查詢)
「+」 存在操做符,要求符號」+」後的項必須在文檔相應的域中存在²
( ) 用於構成子查詢²
² [] 包含範圍檢索,如檢索某時間段記錄,包含頭尾,date:[200707 TO 200710]
{}²不包含範圍檢索,如檢索某時間段記錄,不包含頭尾
date:{200707 TO 200710}
」 轉義操做符,特殊字符包括+ – & | ! ( ) { } [ ] ^ 」 ~ * ? : 「
相關文章
相關標籤/搜索