簡體   English   中英

Solr DIH中的Join Query和Embedded Entities有什么區別?

[英]What is the difference between a Join Query and Embedded Entities in Solr DIH?

我正在嘗試使用Solr的數據導入處理程序在多個表中索引數據。 DIH上的官方維基建議使用嵌入式實體鏈接多個表,如下所示:

<document>
    <entity name="item" pk="id" query="SELECT * FROM item">
        <entity name="member" pk="memberid" query="SELECT * FROM member WHERE memberid='${item.memberid}'>
        </entity>
    </entity>
</document>

另一種方法是:

<document>
    <entity name="item" pk="id" query="SELECT * FROM item INNER JOIN member ON item.memberid=member.memberid">
    </entity>
</document>

這兩種方法在功能上有所不同嗎? 有性能差異嗎? 我的猜測是第一種方法是支持非SQL表,但我不確定。

另一個問題是,如果在MySQL中使用連接表,則使用具有多個連接的SQL查詢方法可能會導致多個文檔被索引而不是一個。

我遇到的一些事情: -

  • 如果您具有一對一映射,則可以使用連接,以便使用一個查詢本身獲取所有字段。
  • 如果您有多個根記錄,您將使用可能創建多值字段的子實體。
  • 子實體為每個記錄觸發查詢,因此性能較慢。

想聽聽其他用戶的意見。

如果要優化性能,可以使用第二個選擇來創建物化視圖。 這意味着您可以直接從物化視圖導入DIH(不在DIH中創建任何內部連接或子實體,這將意味着更快的導入和源數據庫不會“過熱”)如果您願意,您可以創建一個cronjob每天或根據需要快速刷新物化視圖。 如果您使用的是MySQL,可以在這里查看具體化視圖的詳細信息。 希望有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM