W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Solr 擴(kuò)展的 DisMax(eDisMax)查詢解析器是 DisMax 查詢解析器的改進(jìn)版本。
除了支持所有的 DisMax 查詢解析器參數(shù)外,eDismax 解析器還有如下擴(kuò)展:
除了包含所有的 DisMax 參數(shù)外,擴(kuò)展的 DisMax(eDismax)解析器還包括下述的查詢參數(shù):
拆分空格。如果設(shè)置為true
,則對(duì)每個(gè)單獨(dú)的空格分隔的術(shù)語(yǔ)分別調(diào)用文本分析。默認(rèn)是false
;空格分隔的術(shù)語(yǔ)序列將一次性提供給文本分析,從而使分析篩選器的功能能夠正常運(yùn)行,例如,多字同義詞和 shingles。
如果為 true,從一些(而不是所有)qf 字段中刪除子句(例如通過停用詞過濾器),則所需的子句數(shù)(最小值應(yīng)匹配)將自動(dòng)放寬。如果您遇到由于qf
字段之間不均勻禁止刪除而導(dǎo)致查詢返回零擊中,請(qǐng)使用此參數(shù)作為解決方法。
請(qǐng)注意,放松mm
可能會(huì)導(dǎo)致不必要的副作用,例如破壞搜索的精確度,具體取決于索引內(nèi)容的性質(zhì)。
分析為查詢的字符串的多值列表,并將其分?jǐn)?shù)乘以所有匹配文檔的主查詢的分?jǐn)?shù)。此參數(shù)是使用 BoostQParserPlugin 來包裝 eDisMax 生成的查詢的簡(jiǎn)寫。
指示是否將小寫“and”和“or”當(dāng)作與運(yùn)算符“AND”和“OR”相同的布爾型參數(shù)。默認(rèn)為false
。
短語(yǔ) Slop。slop 的默認(rèn)量-術(shù)語(yǔ)之間的距離-在使用 pf、pf2 或 pf3 字段(影響 boosting)構(gòu)建的短語(yǔ)查詢中。另請(qǐng)參見下面的 “使用‘Slop’” 一節(jié)。
帶有可選權(quán)重的字段的多值列表。類似于pf
,但是基于一對(duì)單詞 shingles。
這類似于ps
但是覆蓋了用于pf2
的 slop 因子。如果未指定,則使用ps
。
一個(gè)多值字段列表,帶有可選的權(quán)重,基于單詞組的三聯(lián)體。類似pf
,不同之處在于它不是在每個(gè)字段中使用輸入中的所有單詞構(gòu)建一個(gè)短語(yǔ),而是它會(huì)為每個(gè)字段生成單詞 “shingles”的三聯(lián)體。
類似于ps
但是覆蓋了用于pf3
的坡度因子。如果未指定,則使用ps
。
一個(gè)布爾參數(shù),指示StopFilterFactory
在解析查詢時(shí)是否應(yīng)該遵守查詢分析器中的配置。如果設(shè)置為false
,那么StopFilterFactory
在查詢分析器中被忽略。
指定允許最終用戶明確查詢的架構(gòu)字段。該參數(shù)支持通配符。默認(rèn)是允許所有的字段,相當(dāng)于uf=*
。只允許標(biāo)題字段使用uf=title
。要允許標(biāo)題和以'_s' 結(jié)尾的所有字段,請(qǐng)使用uf=title,*_s
。要允許除標(biāo)題以外的所有字段,請(qǐng)使用uf=*,-title
。要禁止所有派出的搜索,請(qǐng)使用uf=-*
。
可以指定 qf 參數(shù)的 Per-field 覆蓋,以提供在查詢字符串中指定的字段名的1到多個(gè)別名,用于在底層查詢中使用的字段名。默認(rèn)情況下,不使用別名,并將查詢字符串中指定的字段名稱視為索引中的文字字段名稱。
本節(jié)中的所有示例 URL 都假定您正在運(yùn)行 Solr 的 techproducts 示例:
bin/solr -e techproducts
根據(jù)文檔的流行度提升查詢?cè)~ “hello” 的結(jié)果:
http://localhost:8983/solr/techproducts/select?defType=edismax&q=hello&pf=text&qf=text&boost=popularity
搜索 iPod 或視頻:
http://localhost:8983/solr/techproducts/select?defType=edismax&q=ipod+OR+video
在多個(gè)字段中搜索,指定(通過 boosts)每個(gè)字段相對(duì)于彼此的重要性:
http://localhost:8983/solr/techproducts/select?q=video&defType=edismax&qf=features^20.0+text^0.3
您可以提高具有與特定值匹配的字段的結(jié)果:
http://localhost:8983/solr/techproducts/select?q=video&defType=edismax&qf=features^20.0+text^0.3&bq=cat:electronics^5.0
使用“mm”參數(shù),1和2個(gè)單詞查詢要求所有可選子句匹配,但對(duì)于具有三個(gè)或更多子句的查詢,允許使用一個(gè)缺失子句:
http://localhost:8983/solr/techproducts/select?q=belkin+ipod&defType=edismax&mm=2
http://localhost:8983/solr/techproducts/select?q=belkin+ipod+gibberish&defType=edismax&mm=2
http://localhost:8983/solr/techproducts/select?q=belkin+ipod+apple&defType=edismax&mm=2
在下面的示例中,我們看到 qf 參數(shù)的 per-field 覆蓋被用于查詢字符串中"name" 的別名:“l(fā)ast_name” 和 “first_name” 字段:
defType=edismax
q=sysadmin name:Mike
qf=title text last_name first_name
f.name.qf=last_name first_name
“查詢”對(duì)象級(jí)長(zhǎng)時(shí)間支持負(fù)查詢提升(導(dǎo)致匹配文檔為負(fù)值)。現(xiàn)在 QueryParsers 已經(jīng)被更新來處理這個(gè)。
Dismax 和 Edismax 可以針對(duì)所有查詢字段運(yùn)行查詢,還可以針對(duì)短語(yǔ)字段以短語(yǔ)的形式運(yùn)行查詢。但是,該短語(yǔ)查詢可能會(huì)有一個(gè)“slop”,這是查詢?cè)~語(yǔ)之間的距離,同時(shí)仍然將其視為詞組匹配。例如:
q=foo bar
qf=field1^5 field2^10
pf=field1^50 field2^20
defType=dismax
使用這些參數(shù),Dismax 查詢解析器生成一個(gè)如下所示的查詢:
(+(field1:foo^5 OR field2:foo^10) AND (field1:bar^5 OR field2:bar^10))
但是它也會(huì)生成另一個(gè)只用于提高結(jié)果的查詢:
field1:"foo bar"^50 OR field2:"foo bar"^20
因此,任何有“foo”和“bar”這個(gè)詞的文檔都會(huì)匹配;然而,如果其中一些文件中有兩個(gè)詞作為短語(yǔ),那么它將得分高得多,因?yàn)樗嚓P(guān)。
如果添加參數(shù) ps(短語(yǔ) slop),則第二個(gè)查詢將改為:
ps=10 field1:"foo bar"~10^50 OR field2:"foo bar"~10^20
這意味著如果在文檔中出現(xiàn)的術(shù)語(yǔ)“foo”和“bar”之間的術(shù)語(yǔ)互不超過10個(gè),那么這個(gè)短語(yǔ)就會(huì)匹配。例如文檔顯示:
*Foo* term1 term2 term3 *bar*
將匹配短語(yǔ)查詢。
如何使用短語(yǔ)slop?通常它是在請(qǐng)求處理程序(in solrconfig)中配置的。
使用查詢slop(qs)的概念是相似的,但它適用于來自用戶的顯式短語(yǔ)查詢。例如,如果您要搜索名稱,則可以輸入:
q="Hans Anderson"
包含“漢斯·安德森”的文件將匹配,但包含中間名“基督徒”或名稱是先寫姓(“安德森,漢斯”)的文件不會(huì)。對(duì)于這些情況,可以配置查詢字段qs,以便即使用戶搜索明確的短語(yǔ)查詢,也會(huì)應(yīng)用slop。
最后,除了fields(pf)參數(shù)這個(gè)短語(yǔ)外,edismax還支持pf2和pf3參數(shù),用于創(chuàng)建bigram和trigram短語(yǔ)查詢的字段。這些參數(shù)的查詢語(yǔ)句slop可以分別使用ps2和ps3參數(shù)來指定。如果使用pf2/ pf3但ps2/ ps3,那么這些參數(shù)的查詢語(yǔ)句會(huì)從ps參數(shù)中取出,如果有的話。
Solr 查詢解析器中 _val_ 和 _query_ 的用法與 Lucene 查詢解析器中的不同之處在于下列幾處:
_val_:myfield _val_:"recip(rord(myfield),1,2,3)"
_query_:"{!dismax qf=myfield}how now brown cow"
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: