日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Solr 查询语法

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Solr 查询语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要: 默認的Solr查詢語法擴展了Lucene的語法,其目的也就是檢索索引。

basic query

Solr的查詢用到了參數q,標準的查詢語法就想下面這樣:
http://localhost:8983/solr/query?q=test
可以使用debug=query來分析查詢過程:
http://localhost:8983/solr/query?q=test&debug=query

{"responseHeader":{"status":0,"QTime":0,"params":{"q":"hello","debug":"query"}},"response": {"numFound":0,"start":0,"docs":[]},"debug":{"rawquerystring":"hello","querystring":"hello","parsedquery":"text:hello", "parsedquery_toString":"text:hello","QParser":"LuceneQParser"}}

一般來說,response會包含匹配程度最好的文檔,但是上面例子中,沒有文檔滿足這一查詢。
在debug信息中,可以看到是如何解析查詢語句的:查詢的主體是hello,查詢的字段是text。

一般來說,查詢會指定在哪個字段查詢,語法:

title:China

表示的意思是查詢title字段包含China信息。

phrase query

短語查詢是需要滿足多個查詢詞組。

text:"Air China"

這樣的話,查詢到的結果必須包含Air China這樣的詞組,如果標題中只有Air Liquide China是不會匹配到的。

proximity query

臨近查詢有點像短語查詢的擴充,允許干擾項出現在所查詢的詞組之間。

text:"bank of china"~2

如果這樣的話,不僅可以匹配到Bank of China這樣的詞組,還會匹配central bank system of china、bank institution of china這樣的短語。

Boolean query

布爾查詢可以包含多條查詢語句,可以使查詢條件是可選的、必須的、禁止的。

solr search

默認的查詢操作符是OR,也就是說是可選的。那么text中包含solr或包含search都滿足查詢語句。
可以使用一些操作符來實現布爾查詢,例如+、AND表示必須的,-、NOT表示禁止的,OR表示可選的。

+solr +search example -test

可以認為返回的結果必須包含solr和search,不能出現test,有沒有exapmle無所謂。
下面這種寫法表達的是相同的意思:
solr AND search OR exapmle NOT test

boosted query

提升查詢需要用到操作符^,該查詢不會影響到查詢結果的數量,只會改變相關性,影響結果的排序。

text:solr^10 text:rocks text:(solr^10 rocks) (inStock:true AND text:solr)^123.45 text:hi

Range query

范圍查詢需要選定一定范圍的文檔,查詢可以作用于數字類型、日期類型、字符串類型。

age:[18 TO 30] // 匹配 age 在18-30 之間(包含 18 和 30 )age:[18 TO 30} // 匹配 age 在18-30 之間(包含 18 不含 30 )age:[65 TO *] // 匹配 age 大于 65age:[* TO *] // 匹配所有含有age字段的文檔

constant score query

常數得分查詢有點像布爾查詢,只是該查詢需要左右的文檔有相同的得分,查詢需要用到操作符^=。

+color:blue^=1 text:shoes

filter query

過濾查詢需要用到fiter chche,返回的結果都來自緩存,但是由于score 不會緩存,所以滿足查詢條件的文檔得分都是0,不過該查詢請求響應會很快(來自緩存)。

description:HDTV OR filter(+promotion:tv +promotion_date:[NOW/DAY-7DAYS TO NOW/DAY+1DAY])

這里用到了filter()語法。

query comments

可以使用像C語言一樣的注釋語法給solr的查詢語法添加注釋。語法如下:

/* comments */

一個例子:
description:HDTV /* TODO: +promotion:tv +promotion_date:[NOW/DAY-7DAYS TO NOW/DAY+1DAY] */

總結

以上是生活随笔為你收集整理的Solr 查询语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。