W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Collapsing 查詢解析器和 Expand 組件結(jié)合起來,形成了在 Solr 搜索結(jié)果中為字段折疊而對文檔進(jìn)行分組的方法。
Collapsing 查詢解析器根據(jù)您的參數(shù)對文檔進(jìn)行分組(折疊結(jié)果集),而 Expand 組件則提供對折疊組中的文檔的訪問,以便在結(jié)果顯示或客戶端應(yīng)用程序的其他處理中使用。Collapse 和Expand 可以共同執(zhí)行之前的 Result Grouping(group=true)對大多數(shù)用例都適用但不是全部用例。一般來說,您應(yīng)該選擇折疊和擴(kuò)展。
為了在 SolrCloud 中使用這些功能,文檔必須位于同一個分片上。為確保文檔在同一地點(diǎn),您可以在創(chuàng)建集合時定義router.name
參數(shù)作為 compositeId。有關(guān)此選項的詳細(xì)信息, 請參閱文檔路由一節(jié)。
CollapsingQParser 實(shí)際上是一個 post 過濾器,當(dāng)結(jié)果集中的不同組的數(shù)量很多時,提供比 Solr 標(biāo)準(zhǔn)方法更高的性能字段折疊。在將結(jié)果集轉(zhuǎn)發(fā)給其余搜索組件之前,此解析器會將結(jié)果集折疊為每個組的單個文檔。所以所有的下游組件(faceting,highlighting等)都可以與折疊的結(jié)果集一起工作。
CollapsingQParser 接受以下本地參數(shù):
正在折疊的字段。該字段必須是單值 String、Int 或 Float 類型的字段。
根據(jù)哪個文檔具有指定數(shù)字字段或函數(shù)查詢的最小或最大值,為每個組選擇組頭文檔。
至多只能指定一個min
,max
或sort
(見下文)參數(shù)。
如果沒有指定,則將根據(jù)該組中的最高評分文檔來選擇每個組的組長文檔。默認(rèn)值是“none”。
根據(jù)指定的 sort 字符串,根據(jù)哪個文檔最先出現(xiàn),為每個組選擇組頭文檔。
至多只能指定一個min
,max
,(見上文)或sort
參數(shù)。
如果沒有指定,則將根據(jù)該組中的最高評分文檔來選擇每個組的組長文檔。默認(rèn)值是“none”。
有三個可用的空策略:
ignore
:在折疊字段中刪除具有 null 值的文檔。這是默認(rèn)的。
expand
:將折疊字段中的每個文檔的 null 值作為單獨(dú)的組處理。
collapse
:使用最高分或最小/最大值將所有具有 null 值的文檔合并為一個組。
默認(rèn)是ignore
。
目前只有一個提示可用:top_fc
,它代表頂級 FieldCache。
該top_fc
提示僅在折疊字符串字段時可用。top_fc
通常會提供最佳的查詢時間速度,但在啟動或提交后需要最長的時間來預(yù)熱。top_fc
還將導(dǎo)致折疊字段在內(nèi)存中緩存兩次,如果它用于分面或排序。對于非常高的基數(shù)(高分?jǐn)?shù))的字段,top_fc
可能不那么好。
默認(rèn)值是“none”。
僅在折疊數(shù)值字段時設(shè)置折疊數(shù)據(jù)結(jié)構(gòu)的初始大小。
用于折疊的數(shù)據(jù)結(jié)構(gòu)在數(shù)值字段上折疊時動態(tài)增長。將大小設(shè)置為結(jié)果集中預(yù)期的結(jié)果數(shù)量將會消除調(diào)整大小的成本。
默認(rèn)值是“100,000”。
折疊 group_field 選擇每個組中具有最高分?jǐn)?shù)文檔的文檔::
fq={!collapse field=group_field}
折疊 group_field 選擇每個組中的文檔,其中最小值為 numeric_field:
fq={!collapse field=group_field min=numeric_field}
折疊 group_field 選擇每個組中的文檔,其中最大值為 numeric_field:
fq={!collapse field=group_field max=numeric_field}
折疊 group_field 在每個組中選擇一個函數(shù)的最大值的文檔。請注意,cscore () 函數(shù)可與 "min/max" 選項一起使用,以使用當(dāng)前正在折疊的文檔的分?jǐn)?shù)。
fq={!collapse field=group_field max=sum(cscore(),numeric_field)}
使用空策略在 group_field 上折疊,以便在 group_field 中沒有值的所有文檔都將被視為單個組。對于每個組,所選文檔將首先基于 numeric_field,但關(guān)系將按分?jǐn)?shù)中斷:
fq={!collapse field=group_field nullPolicy=collapse sort='numeric_field asc, score desc'}
在 group_field 上折疊,并提示使用頂層字段緩存:
fq={!collapse field=group_field hint=top_fc}
CollapsingQParserPlugin 完全支持 QueryElevationComponent。
ExpandComponent 可用于展開 CollapsingQParserPlugin 折疊的組。
CollapsingQParserPlugin的使用示例:
q=foo&fq={!collapse field=ISBN}
在上面的查詢中,CollapsingQParserPlugin 會折疊 ISBN 字段上的搜索結(jié)果。主要搜索結(jié)果將包含每本書中排名最高的文檔。
現(xiàn)在可以使用 ExpandComponent 擴(kuò)展結(jié)果,以便可以看到按 ISBN 分組的文檔。例如:
q=foo&fq={!collapse field=ISBN}&expand=true
“expand = true” 參數(shù)打開 ExpandComponent。ExpandComponent 將新節(jié)添加到標(biāo)記為 “expanded” 的搜索輸出中。
在展開的部分中,有一個地圖,每個組頭都指向組內(nèi)的展開文檔。當(dāng)應(yīng)用程序遍歷主要折疊結(jié)果集時,他們可以訪問展開的地圖來檢索展開的組。
ExpandComponent 具有以下參數(shù):
在展開的組中對文檔進(jìn)行排序。默認(rèn)是score desc
。
每個組中顯示的行數(shù)。默認(rèn)值是5行。
重寫主查詢(q
),確定要在主組中包含哪些文檔。默認(rèn)是使用主查詢。
重寫主過濾器查詢(fq
),確定要在主組中包含哪些文檔。默認(rèn)是使用主要的過濾器查詢。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: