众所周知,solr 4.0支持原子更新。 http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22 solrnet是否支持此功能? 如果是,我可以知道语法。 非常感谢。
答案 0 :(得分:2)
感谢您提供的链接,请执行以下操作(明显更改以符合您的要求,并假设您正在使用某个DI容器,以便通过注册SolrFacility来处理您的ISolrOperations和ISolrConnection):
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();
}
答案 1 :(得分:0)
据我所知,SolrNet尚不支持原子更新,我认为SolrNet Project Issues List或SolrNet Commits on GitHub中没有提及它。
答案 2 :(得分:0)
请注意原子更新非常有限。如果您期望更新功能a-la数据库 - 它还没有。在引擎盖下,使用存储的字段重新创建文档。当您不想重新发送所有字段并且不关心将所有字段存储在索引中时,它会很方便。 据我所知,“真正的”更新即将到来。