我已使用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;
}
答案 0 :(得分:1)
您真的很亲近。您必须先将上下文排队,然后再添加并提交。
using (var solr = ContentSearchManager.GetIndex("my_index'))
{
var ctx = solr.CreateUpdateContext();
solr.Operations.Add(newItem, ctx, solr.Configuration);
ctx.Commit();
}
由于这是在后台使用SolrNet,因此必须执行针对Solr的所有操作。