![](/img/trans.png)
[英]Achieve Full Outer Join Effect Without Duplicating Columns In SQLite JDBC
[英]Full Outer Join in Solr
我正在嘗試對兩個集合進行完整的外部聯接。 給定帶有如下文檔的collection1
:
{
id: 234982032,
name: example,
listId: 123
}
和collection2
的文檔如下所示:
{
id: 123,
description: desc1
}
我期待這樣的結果:
{
id: 234982032,
name: example,
description: desc1
}
我試過使用這個命令:
fq={!join from=listId to=id fromIndex=collection2}description:desc1
但這只會導致內部聯接。 有沒有辦法可以使用過濾器查詢外部連接兩個集合? 如果這是不可能的 是否有插件可以做到這一點?
在 Solr 中使用連接查詢解析器(即{!join}
)的{!join}
無法從連接的兩側檢索內容。 這些是純粹的內部聯接,其中一個字段用於從被查詢的集合中過濾內容。
這與關系數據庫中的聯接概念不同,因為沒有真正聯接任何信息。 一個合適的 SQL 類比是“內部查詢”。
如果您使用的是最新版本的 Solr,您還有另一種選擇,即使用 Streaming Expression 。
這將允許您設置兩個流源,然后應用leftOuterJoin或outerHashJoin來獲取包含來自雙方的組合信息的文檔。
從參考指南中的示例:
leftOuterJoin(
search(people, q="*:*", qt="/export", fl="personId,name", sort="personId asc"),
search(pets, q="type:cat", qt="/export", fl="personId,petName", sort="personId asc"),
on="personId"
)
outerHashJoin(
search(people, q="*:*", qt="/export", fl="personId,name", sort="personId asc"),
hashed=search(pets, q="type:cat", qt="/export", fl="personId,petName", sort="personId asc"),
on="personId"
)
用您的問題中的collection1
和collection2
替換pets
和people
。 請注意,在使用leftOuterJoin
時,您必須有一個sort
標准來映射用於連接的鍵,但這通常會使連接對於更大的結果更有效,因為 outerHashJoin 必須在內存中保留更多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.