因爲 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} 」 轉義操做符,特殊字符包括+ – & | ! ( ) { } [ ] ^ 」 ~ * ? : 「