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