[英]Solr : How can I group on two different fields?
我的架構如下:
product_id
category_id
類別包含產品。
在solr 3.6中,我對category_id進行了分組,效果很好。
我剛剛添加了一個新字段:
group_id
一組包含大小或顏色不同的產品。
示例:藍色,紅色和黃色的鞋子是3種不同的產品,並且具有相同的group_id。
除了字段category_id的結果分組之外,我希望在我的結果中只有一個group_id的產品,假設group_id可以為null(對於不屬於組的產品)。
按照鞋子的例子,這意味着對於請求“鞋子”,3個產品中只有一個應該是結果。
我想在group_id上進行第二次結果分組,但我似乎不可能這樣做。
任何的想法?
編輯:現在,我在php中處理結果,刪除已經在結果中的group_id的文檔。 我打開這個主題,以防有人發現如何分組2個字段
如果您的目標是根據多個“分組依據”字段獲取分組計數,則可以使用數據透視分面來實現此目的。
&facet.pivot=category_id,group_id
Solr將在facet_pivot
元素下面的搜索結果頁面之后返回分組結果計數的層次結構。
無法按兩個字段進行查詢分組。 如果需要計數,則可以使用facet.field
(對於單個字段)或facet.pivot
(對於多個字段)。 它實際上不是組,但您可以獲得多個字段的組數。
示例輸出:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<bool name="zkConnected">true</bool>
<int name="status">0</int>
<int name="QTime">306</int>
</lst>
<result name="response" numFound="667" start="0" maxScore="0.70710677">
<doc>
<int name="idField">7393</int>
<int name="field_one">12</int>
</doc>
</result>
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields"/>
<lst name="facet_ranges"/>
<lst name="facet_intervals"/>
<lst name="facet_heatmaps"/>
<lst name="facet_pivot">
<arr name="field_one,field_two">
<lst>
<str name="field">field_one</str>
<int name="value">3</int>
<int name="count">562</int>
<arr name="pivot">
<lst>
<str name="field">field_two</str>
<bool name="value">true</bool>
<int name="count">347</int>
</lst>
<lst>
<str name="field">field_two</str>
<bool name="value">false</bool>
<int name="count">215</int>
</lst>
</arr>
</lst>
<lst>
<str name="field">field_one</str>
<int name="value">12</int>
<int name="count">105</int>
<arr name="pivot">
<lst>
<str name="field">field_two</str>
<bool name="value">true</bool>
<int name="count">97</int>
</lst>
<lst>
<str name="field">field_two</str>
<bool name="value">false</bool>
<int name="count">8</int>
</lst>
</arr>
</lst>
</arr>
</lst>
</lst>
</response>
示例查詢:
http://192.168.100.145:7983/solr/<collection>/select?facet.pivot=field_one,field_two&facet=on&fl=idField,field_one&indent=on&q=field_one:(3%2012)&rows=1&wt=xml
如果您可以更改要發布到solr的數據,那么我建議您創建一個字符串字段,該字段將具有category_id和group_id的串聯。 例如,如果category_id = 5且group_id = 2,那么您的字符串字段可以是: - '5,2'(使用','或任何其他字符作為分隔符)。 然后,您可以對此字符串字段進行分組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.