SOLR使用手冊之查詢語法

.基本查詢php

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_time2008100120091031之間的。java



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

- 排除在要排除的詞前加上 「-」 (不包含)
其它

indent – 返回的結果是否縮進,默認關閉,用 indent=true|on 開啓,通常調試json,php,phps,ruby輸出纔有必要用這個參數。
version – 查詢語法的版本,建議不使用它,由服務器指定默認值。
[Solr的檢索運算符]
「:」 指定字段查指定值,如返回全部值*:*²
「?」²表示單個任意字符的通配
「*」 表示多個任意字符的通配(不能在檢索的項開始使用*或者?符號)²
「~」²表示模糊檢索,如檢索拼寫相似於」roam」的項這樣寫:roam~將找到形如foamroams的單詞;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}
轉義操做符,特殊字符包括+ – & | ! ( ) { } [ ] ^ 」 ~ * ? : 「算法

.高亮apache


     hl-highlighth1=true,表示採用高亮。能夠用h1.fl=field1,field2 來設定高亮顯示的字段。json

hl.fl: 用空格或逗號隔開的字段列表。要啓用某個字段的highlight功能,就得保證該字段在schema中是stored。若是該參數未被給出,那麼就會高 亮默認字段 standard handler會用df參數,dismax字段用qf參數。你可使用星號去方便的高亮全部字段。若是你使用了通配符,那麼要考慮啓用 hl.requiredFieldMatch選項。ruby

hl.requireFieldMatch:
若是置爲true,除非該字段的查詢結果不爲空纔會被高亮。它的默認值是false,意味 着它可能匹配某個字段卻高亮一個不一樣的字段。若是hl.fl使用了通配符,那麼就要啓用該參數。儘管如此,若是你的查詢是all字段(多是使用 copy-field 指令),那麼仍是把它設爲false,這樣搜索結果能代表哪一個字段的查詢文本未被找到服務器

hl.usePhraseHighlighter:
若是一個查詢中含有短語(引號框起來的)那麼會保證必定要徹底匹配短語的纔會被高亮。ui

hl.highlightMultiTerm
若是使用通配符和模糊搜索,那麼會確保與通配符匹配的term會高亮。默認爲false,同時hl.usePhraseHighlighter要爲truespa

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.xmlhighlighting元素是如何配置的。
注意在不論原文中被高亮了什麼值的狀況下,如預先已存在的em tags,也不會被轉義,因此在有時會致使假的高亮。

hl.fragmenter:
這個是solr fragment算法的擴展點。gap是默認值。regex是另外一種選項,這種選項指明highlight的邊界由一個正則表達式肯定。這是一種非典型 的高級選項。爲了知道默認設置和fragmenters (and formatters)是如何配置的,能夠看看solrconfig.xml中的highlight段。
regex fragmenter有以下選項:

hl.regex.pattern:正則表達式的pattern

hl.regex.slop:這是hl.fragsize能變化以適應正則表達式的因子。默認值是0.6,意思是若是hl.fragsize=100那麼fragment的大小會從40-160.

相關文章
相關標籤/搜索