solr語法參數

查詢參數

常用:

  • 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_i

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_i&facet.query=price_p:[300.00000+TO+*]

高亮

hl-highlighth1=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的邊界由一個正則表達式確定。這是一種非典型 的高級選項。爲了知道默認設置和fragmenters (and formatters)是如何配置的,可以看看 solrconfig.xml 中的highlight段。
  • hl.regex.pattern:正則表達式的pattern
  • hl.regex.slop:這是hl.fragsize能變化以適應正則表達式的因子。默認值是0.6,意思是如果 hlfragsize=100 那麼fragment的大小會從40-160.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章