如何以编程方式将项目添加到 Sitecore 中的自定义索引?

How to add an item to a custom index in Sitecore programmatically?

我使用 FlatDataCrawler 在 Sitecore 中创建了自定义索引。 现在我要把继承自 AbstractIndexable 的新项目添加到我的索引中。

private void Test() {
    var newItem = new ContactIndexable {
        Number = new System.Random().Next(500, 10000),
        MyField = "Item from IMPORTER"
    };
    var index = ContentSearchManager.GetIndex("my_index");
    using (var ctx = index.CreateUpdateContext()) {
        //This line doesn't work:
        ctx.Index.Operations.Add(newItem, index.CreateUpdateContext(), index.Configuration);
        index.Refresh(newItem);
    }

}

调用此代码导致在我的自定义爬虫中仅调用了 GetItemsToIndex 方法,但该元素未添加到索引中。

那么,如何通过代码将新项目添加到我的自定义索引?

此方法运行正常,索引中添加了一个新元素:

protected override IEnumerable<ContactIndexable> GetItemsToIndex() {
    List<ContactIndexable> items = new List<ContactIndexable>() {
        new ContactIndexable()
        {
             MyField = "Created in crawler"
        }
    };
    return items;
}

你真的很接近。必须先把context排队,然后再add和commit。

using (var solr = ContentSearchManager.GetIndex("my_index'))
{
    var ctx = solr.CreateUpdateContext();
    solr.Operations.Add(newItem, ctx, solr.Configuration);
    ctx.Commit();
}

由于这是在后台使用 SolrNet,因此必须提交针对 Solr 的所有操作。