2015-03-13 26 views
1

我想加速DIH爲具有以下結構的solr的配置的solr DIH:如何加快與子查詢

  • 用戶實體(被映射到用戶表)
  • 用戶實體具有1 ..n值映射到用戶實體的字段。所以n個附加字段
  • 每個字段都通過值表上的子查詢收集。

例如:

實體:用戶(select * from user)

用戶具有以下字段:

value_1: (select * from value where uid=user.id and category=1) 
value_2: (select * from value where uid=user.id and category=2) 
value_3: (select * from value where uid=user.id and category=3) 

由於有許多子查詢,進口時間過長。

什麼是使用SOLR和DIH(MySQL)的最佳方法?

回答

0

我已經處理了這個確切同樣的問題加快速度,並在心臟的問題是,無論是MySQL的,也不Solr的SQL DIH具有內置的容量使用一個字段來幫助名字一個MySQL結果列或一個Solr字段。

理想情況下,你可以做這樣的事情:這是行不通的!

<entity name="value" query="select myfield, category from t1 where uid=${user.id}"> 
    <field column="myfield" name="value_${value.category}"> 
</entity> 

沒有這個美好的,不存在的功能,有幾種方法可以方便少獲得類似的功能。

This page顯示了兩種不同的方法有很大的分析來創建這個功能,無論是與ScriptTransformer(他發現它很容易實現,但它減緩了進口嚴重),或TemplateTransformer(這就需要你編譯一個很短的Java代碼,但顯然是更有效。

再次,this可能是你想要的解決方案。

就我自己來說,我還沒有找到這個解決方案,而是寫了一個簡短的Java程序創建SQL請求,構建SolrInputDocument,然後提交m分批到Solr。然後,當我們決定將所有值放入Solr作爲單個JSON編碼字段時,整個事情就變得無關緊要了。

祝你好運!