2012-11-13 38 views
3

衆所周知,solr 4.0支持原子更新。 http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22 這是solrnet支持嗎? 如果是,我可以知道語法。 非常感謝。Solr 4.0和Solrnet Atomic Updates

+1

剛剛創建關於此問題的新任務:http://code.google.com/p/solrnet/issues/detail?id=199 –

+1

只是作爲一種解決方法,我們可以使用在這個博客http://teach-algo.blogspot.in/2013/03/atomic-up中給出的步驟日期 - 通過-solrnet.html – GeekBoy

回答

0

請注意,原子更新是相當有限的。如果你期望更新功能a-la數據庫 - 它還沒有。在引擎蓋下,使用存儲的字段重新創建文檔。當您不想重新發送所有字段並且不關心將所有字段存儲在索引中時,它可能很方便。 據我所知,'真正'的更新即將到來。

1

感謝你提供的鏈接,請執行下列操作(有明顯的變化,以滿足您的要求,並讓您的ISolrOperations和ISolrConnection通過SolrFacility登記照顧假設你使用一些DI容器):

private readonly ISolrOperations<Document> _solr; 
    private readonly ISolrConnection _solrConnection; 

    public SolrRecordRepository(ISolrOperations<Document> solr, ISolrConnection solrConnection) 
    { 
     _solr = solr; 
     _solrConnection = solrConnection; 
    } 

...

public void UpdateField(int id, string fieldName, int value, bool optimize = false) 
    { 
     var updateXml = string.Format("<add><doc><field name='id'>{0}</field><field name='{1}' update='set'>{2}</field></doc></add>", id, fieldName, value); 
     _solrConnection.Post("/update", updateXml); 

     _solr.Commit(); 

     if (optimize) 
      _solr.Optimize(); 
    }