Solr查詢文法

來源:互聯網
上載者:User

標籤:

查詢參數

常用:

  • 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。
  • fq - (filter query)過慮查詢,作用:在q查詢符合結果中同時是fq查詢符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找關鍵字mm,並且date_time是20081001到20091031之間的

不常用:

  • defType:
  • q.op - 覆蓋schema.xml的defaultOperator(有空格時用"AND"還是用"OR"操作邏輯),一般預設指定
  • df - 預設的查詢欄位,一般預設指定
  • qt - (query type)指定那個類型來處理查詢請求,一般不用指定,預設是standard。

其它:

  • indent - 返回的結果是否縮排,預設關閉,用 indent=true|on 開啟,一般調試json,php,phps,ruby輸出才有必要用這個參數。
  • version- 查詢文法的版本,建議不使用它,由伺服器指定預設值。
檢索運算子
  • : 指定欄位查指定值,如返回所有值:
  • ? 表示單個任一字元的通配
  • * 表示多個任一字元的通配(不能在檢索的項開始使用*或者?符號)
  • ~ 表示模糊檢索,如檢索拼字類似於"roam"的項這樣寫:roam~將找到形如foam和roams的單詞;roam~0.8,檢索返回相似性在0.8以上的記錄。 鄰近檢索,如檢索相隔10個單詞的"apache"和"jakarta","jakarta apache"~10
  • ^ 控制相關度檢索,如檢索jakarta apache,同時希望去讓"jakarta"的相關度更加好,那麼在其後加上""符號和增量值,即jakarta4 apache
  • 布爾操作符AND、||
  • 布爾操作符OR、&&
  • 布爾操作符NOT、!、-(排除操作符不能單獨與項使用構成查詢)
  • + 存在操作符,要求符號"+"後的項必須在文檔相應的域中存在
  • () 用於構成子查詢
  • [] 包含範圍檢索,如檢索某時間段記錄,包含頭尾,date:[200707 TO 200710]
  • {}不包含範圍檢索,如檢索某時間段記錄,不包含頭尾,date:{200707 TO 200710}
  • " 轉義操作符,特殊字元包括+ - && || ! ( ) { } [ ] ^ " ~ * ? : "
樣本
  • 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欄位

  • 6. facet查詢

現實分組統計結果

http://localhost:8080/solr/primary/select?q=*:*&fl=productId&fq=category:2002&facet=true&facet.field=en_US_county_i&facet.field=en_US_hotelType_s&facet.field=price_p&facet.field=heatRange_ihttp://localhost:8080/solr/primary/select?q=*:*&fl=productId&fq=category:2002&facet=true&facet.field=en_US_county_i&facet.field=en_US_hotelType_s&facet.field=price_p&facet.field=heatRange_i&facet.query=price_p:[300.00000+TO+*]
高亮

hl-highlight,h1=true,表示採用高亮。可以用h1.fl=field1,field2 來設定高亮顯示的欄位。

  • hl.fl:用空格或逗號隔開的欄位列表。要啟用某個欄位的highlight功能,就得保證該欄位在schema中是stored。如果該參數未被給出,那麼就會高 亮預設欄位 standard handler會用df參數,dismax欄位用qf參數。你可以使用星號去方便的高亮所有欄位。如果你使用了萬用字元,那麼要考慮啟用 。
  • hl.requireFieldMatch:如果置為true,除非該欄位的查詢結果不為空白才會被高亮。它的預設值是false,意味 著它可能匹配某個欄位卻高亮一個不同的欄位。如果hl.fl使用了萬用字元,那麼就要啟用該參數。儘管如此,如果你的查詢是all欄位(可能是使用 copy-field 指令),那麼還是把它設為false,這樣搜尋結果能表明哪個欄位的查詢文本未被找到
  • hl.usePhraseHighlighter:如果一個查詢中含有短語(引號框起來的)那麼會保證一定要完全符合短語的才會被高亮。
  • hl.highlightMultiTerm 如果使用萬用字元和模糊搜尋,那麼會確保與萬用字元匹配的term會高亮。預設為false,同時hl.usePhraseHighlighter要為true。
  • hl.snippets: 這是highlighted片段的最大數。預設值為1,也幾乎不會修改。如果某個特定的欄位的該值被置為0(如f.allText.hl.snippets=0),這就表明該欄位被禁用高亮了。你可能在hl.fl=*時會這麼用。
  • hl.fragsize: 每個snippet返回的最大字元數。預設是100.如果為0,那麼該欄位不會被fragmented且整個欄位的值會被返回。大欄位時不會這麼做。
  • hl.mergeContiguous: 如果被置為true,當snippet重疊時會merge起來。
  • hl.maxAnalyzedChars: 會搜尋高亮的最大字元,預設值為51200,如果你想禁用,設為-1
  • hl.alternateField: 如果沒有產生snippet(沒有terms 匹配),那麼使用另一個欄位值作為返回。
  • hl.maxAlternateFieldLength: 如果hl.alternateField啟用,則有時需要制定alternateField的最大字元長度,預設0是即沒有限制。所以合理的值是應該為hl.snippets * hl.fragsize這樣返回結果的大小就能保持一致。
  • hl.formatter:一個提供可替換的formatting演算法的擴充點。預設值是simple,這是目前僅有的選項。顯然這不夠用,你可以看看org.apache.solr.highlight.HtmlFormatter.java 和 solrconfig.xml 中highlighting元素是如何配置的。 注意在不論原文中被高亮了什麼值的情況下,如預先已存在的em tags,也不會被轉義,所以在有時會導致假的高亮。 -hl.fragmenter:這個是solr制定fragment演算法的擴充點。gap是預設值。regex是另一種選項,這種選項指明highlight的邊界由一個Regex確定。這是一種非典型 的進階選項。為了知道預設設定和fragmenters (and formatters)是如何配置的,可以看看 solrconfig.xml 中的highlight段。
  • hl.regex.pattern:Regex的pattern
  • hl.regex.slop:這是hl.fragsize能變化以適應Regex的因子。預設值是0.6,意思是如果 hlfragsize=100 那麼fragment的大小會從40-160.
----EOF----- 

Solr查詢文法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.