2016-03-14 68 views
0

我在mysql中有幾個表,我已經非規範化並在solr中建立索引。這意味着來自多個表格的行在solr中形成一個文檔。當請求到達時,它可能會更新mysql中的多個表,但我的目標是發出一個請求來solr更新每個請求的索引。我看過Django的信號來同步索引與MySQL。但是它不能達到solr索引更新的目的。我應該考慮哪些其他選項?什麼是做這件事的理想方式?在solr(django webapp)中批量更新文檔

回答

-1

我是能夠實現上述的所以現在增加一個共同的信號處理程序爲所有的車型

@receiver(post_save, sender=Model1) 
@receiver(post_save, sender=Model2) 
@receiver(post_save, sender=Model3) 
def handler(sender, instance, created, **kwargs): 
    redis_connection.set(current_thread().name, instance.id) 

,然後在SolrUpdateMiddleware

class SolrUpdateMiddleware(object): 
    def process_response(self, request, response): 
     id = redis_connection.get(current_thread().name) 
     update_solr(id) 
     redis_connection.delete(current_thread().name) 
     return response 

特定的要求,只有一個更新將去solr。現在我正在使用一個關鍵值對。如果我想在一個請求中刷新多個文檔,我可以使用一個集合。