溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SOLR查詢語(yǔ)法有哪些

發(fā)布時(shí)間:2021-12-22 17:44:29 來(lái)源:億速云 閱讀:99 作者:iii 欄目:云計(jì)算

這篇文章主要講解了“SOLR查詢語(yǔ)法有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“SOLR查詢語(yǔ)法有哪些”吧!

.基本查詢

q – 查詢字符串,必須的。
fl – 指定返回那些字段內(nèi)容,用逗號(hào)或空格分隔多個(gè)。
start – 返回第一條記錄在完整找到結(jié)果中的偏移位置,0開(kāi)始,一般分頁(yè)用。
rows – 指定返回結(jié)果最多有多少條記錄,配合start來(lái)實(shí)現(xiàn)分頁(yè)。
sort – 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默認(rèn)是相關(guān)性降序。
wt – (writer type)指定輸出格式,可以有 xml, json, php, phps, 后面 solr 1.3增加的,要用通知我們,因?yàn)槟J(rèn)沒(méi)有打開(kāi)。
fq – (filter query)過(guò)慮查詢,作用:在q查詢符合結(jié)果中同時(shí)是fq查詢符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找關(guān)鍵字mm,并且date_time是20081001到20091031之間的。



q.op – 覆蓋schema.xml的defaultOperator(有空格時(shí)用”AND”還是用”O(jiān)R”操作邏輯),一般默認(rèn)指定
df – 默認(rèn)的查詢字段,一般默認(rèn)指定
qt – (query type)指定那個(gè)類型來(lái)處理查詢請(qǐng)求,一般不用指定,默認(rèn)是standard。

- 排除在要排除的詞前加上 “-” (不包含”號(hào)) 號(hào)
其它

indent – 返回的結(jié)果是否縮進(jìn),默認(rèn)關(guān)閉,用 indent=true|on 開(kāi)啟,一般調(diào)試json,php,phps,ruby輸出才有必要用這個(gè)參數(shù)。
version – 查詢語(yǔ)法的版本,建議不使用它,由服務(wù)器指定默認(rèn)值。
[Solr的檢索運(yùn)算符]
“:” 指定字段查指定值,如返回所有值*:*2
“?”2表示單個(gè)任意字符的通配
“*” 表示多個(gè)任意字符的通配(不能在檢索的項(xiàng)開(kāi)始使用*或者?符號(hào))2
“~”2表示模糊檢索,如檢索拼寫(xiě)類似于”roam”的項(xiàng)這樣寫(xiě):roam~將找到形如foam和roams的單詞;roam~0.8,檢索返回相似度在0.8以上的記錄。
2鄰近檢索,如檢索相隔10個(gè)單詞的”apache”和”jakarta”,”jakarta apache”~10
“^”2控制相關(guān)度檢索,如檢索jakarta apache,同時(shí)希望去讓”jakarta”的相關(guān)度更加好,那么在其后加上”^”符號(hào)和增量值,即jakarta^4 apache
布爾操作符AND、||2
布爾操作符OR、2&&
布爾操作符NOT、!、-2(排除操作符不能單獨(dú)與項(xiàng)使用構(gòu)成查詢)
“+” 存在操作符,要求符號(hào)”+”后的項(xiàng)必須在文檔相應(yīng)的域中存在2
( ) 用于構(gòu)成子查詢2
2 [] 包含范圍檢索,如檢索某時(shí)間段記錄,包含頭尾,date:[200707 TO 200710]
{}2不包含范圍檢索,如檢索某時(shí)間段記錄,不包含頭尾
date:{200707 TO 200710}
” 轉(zhuǎn)義操作符,特殊字符包括+ – & | ! ( ) { } [ ] ^ ” ~ * ? : “

.高亮


     hl-highlight,h2=true,表示采用高亮??梢杂胔2.fl=field1,field2 來(lái)設(shè)定高亮顯示的字段。

hl.fl: 用空格或逗號(hào)隔開(kāi)的字段列表。要啟用某個(gè)字段的highlight功能,就得保證該字段在schema中是stored。如果該參數(shù)未被給出,那么就會(huì)高 亮默認(rèn)字段 standard handler會(huì)用df參數(shù),dismax字段用qf參數(shù)。你可以使用星號(hào)去方便的高亮所有字段。如果你使用了通配符,那么要考慮啟用 hl.requiredFieldMatch選項(xiàng)。

hl.requireFieldMatch:
如果置為true,除非該字段的查詢結(jié)果不為空才會(huì)被高亮。它的默認(rèn)值是false,意味 著它可能匹配某個(gè)字段卻高亮一個(gè)不同的字段。如果hl.fl使用了通配符,那么就要啟用該參數(shù)。盡管如此,如果你的查詢是all字段(可能是使用 copy-field 指令),那么還是把它設(shè)為false,這樣搜索結(jié)果能表明哪個(gè)字段的查詢文本未被找到

hl.usePhraseHighlighter:
如果一個(gè)查詢中含有短語(yǔ)(引號(hào)框起來(lái)的)那么會(huì)保證一定要完全匹配短語(yǔ)的才會(huì)被高亮。

hl.highlightMultiTerm
如果使用通配符和模糊搜索,那么會(huì)確保與通配符匹配的term會(huì)高亮。默認(rèn)為false,同時(shí)hl.usePhraseHighlighter要為true。

hl.snippets:
這是highlighted片段的最大數(shù)。默認(rèn)值為1,也幾乎不會(huì)修改。如果某個(gè)特定的字段的該值被置為0(如f.allText.hl.snippets=0),這就表明該字段被禁用高亮了。你可能在hl.fl=*時(shí)會(huì)這么用。

hl.fragsize:
每個(gè)snippet返回的最大字符數(shù)。默認(rèn)是100.如果為0,那么該字段不會(huì)被fragmented且整個(gè)字段的值會(huì)被返回。大字段時(shí)不會(huì)這么做。

hl.mergeContiguous:
如果被置為true,當(dāng)snippet重疊時(shí)會(huì)merge起來(lái)。

hl.maxAnalyzedChars:
會(huì)搜索高亮的最大字符,默認(rèn)值為51200,如果你想禁用,設(shè)為-1

hl.alternateField:
如果沒(méi)有生成snippet(沒(méi)有terms 匹配),那么使用另一個(gè)字段值作為返回。

hl.maxAlternateFieldLength:
如果hl.alternateField啟用,則有時(shí)需要制定alternateField的最大字符長(zhǎng)度,默認(rèn)0是即沒(méi)有限制。所以合理的值是應(yīng)該為

hl.snippets * hl.fragsize這樣返回結(jié)果的大小就能保持一致。

hl.formatter:一個(gè)提供可替換的formatting算法的擴(kuò)展點(diǎn)。默認(rèn)值是simple,這是目前僅有的選項(xiàng)。

顯然這不夠用,你可以看看org.apache.solr.highlight.HtmlFormatter.java 和 solrconfig.xml中highlighting元素是如何配置的。
注意在不論原文中被高亮了什么值的情況下,如預(yù)先已存在的em tags,也不會(huì)被轉(zhuǎn)義,所以在有時(shí)會(huì)導(dǎo)致假的高亮。

hl.fragmenter:
這個(gè)是solr制 定fragment算法的擴(kuò)展點(diǎn)。gap是默認(rèn)值。regex是另一種選項(xiàng),這種選項(xiàng)指明highlight的邊界由一個(gè)正則表達(dá)式確定。這是一種非典型 的高級(jí)選項(xiàng)。為了知道默認(rèn)設(shè)置和fragmenters (and formatters)是如何配置的,可以看看solrconfig.xml中的highlight段。
regex 的fragmenter有如下選項(xiàng):

hl.regex.pattern:正則表達(dá)式的pattern

hl.regex.slop:這是hl.fragsize能變化以適應(yīng)正則表達(dá)式的因子。默認(rèn)值是0.6,意思是如果hl.fragsize=100那么fragment的大小會(huì)從40-160.

感謝各位的閱讀,以上就是“SOLR查詢語(yǔ)法有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)SOLR查詢語(yǔ)法有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI