2015-09-15 110 views
1

我正在經歷Yonik的blog。 我正在使用solr 5.3.0,我有一個我正試圖解決的場景。 任何幫助將不勝感激。嵌套查詢並檢索子過濾器的父屬性

泛化Yonik的例子:

舊文件:

{ 
    product_name : "Awesome T-Shirt", 
    category : "Clothing", 
    color : [ "Red", "Blue"], 
    size : [ "L", "M", "XL" ] 
} 

家長:

{ 
    product_name : "Awesome T-Shirt", 
    category : "Clothing", 
} 

嵌套子:

{ 
    color : "Red", 
    size : "L", 
    quantity: 2 
} 
{ 
    color : "Blue", 
    size : "M", 
    quantity: 3 
} 
{ 
    color : "Blue", 
    size : "L", 
    quantity: 0 
} 
{ 
    color : "Red", 
    size : "L", 
    quantity: 0 
} 
{ 
    color : "Red", 
    size : "XL", 
    quantity: 1 
} 

計數的一些情況: 1)如果我把過濾器的顏色:紅色和尺寸:L我只得到兒童文件。是否有可能獲得響應的父領域(因爲我有多個產品的顏色:紅色和大小:L)。 2)如果我搜索顏色:紅色和數量大於0,我得到多個文件,而這個搜索只是爲了檢查紅色的項目是否可用。雖然小組是一個工作,是否有任何其他方式。

回答

0

我想Solr的塊加入解析器會得到你所需要的:

Block join

+0

感謝您的回覆。雖然我已經嘗試過,但我沒有得到期望的結果。你可以舉一個上面的場景查詢的例子嗎? –

4

如果你想獲得parent documentschild documents我應該這樣做:

/select?q=id:<parent id> 
&fq=type:<parent type> 
&fl=*,[child parentFilter="type:<parent type>" limit=10] 

將返回像這樣的結構:

{ 
"type":"<parent type>", 
.... 
"_childDocuments_":[{ 
<doc>..</doc> 
... 
<doc>..</doc> 
}] 
} 

子文件數有限制limit=10你當然可以改變,但默認爲10 :)