4

众所周知,solr 4.0 支持原子更新。 http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22 solrnet 支持吗?如果是,我可以知道语法。万分感谢。

4

3 回答 3

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();
    }
于 2014-06-05T23:49:10.327 回答
0

请注意,原子更新非常有限。如果您期望更新功能 a-la 数据库 - 它还没有。在引擎盖下,文档是使用存储的字段重新创建的。当您不想重新发送所有字段并且不关心将所有字段存储在索引中时,它会很方便。据我所知,“真正的”更新即将到来。

于 2012-11-13T14:32:19.610 回答
0

据我所知,SolrNet 还不支持原子更新,我没有看到它列在SolrNet 项目问题列表中,也没有在 GitHub 上的 SolrNet 提交中提及。

于 2012-11-13T12:43:50.890 回答