|
using System.Linq;
using Raven.Database.Extensions;
using Raven.Database.Indexing;
using Raven.Database.Json;
namespace Raven.Database.Tasks
{
/// <summary>
/// Indexing a range of documents
/// A range of documents is a stable range, which can be queried even if document addition / removal
/// occured since the time that the range was taken to the time it was queried.
/// </summary>
public class IndexDocumentRangeTask : Task
{
public int FromId { get; set; }
public int ToId { get; set; }
public override string ToString()
{
return string.Format("IndexDocumentRangeTask - Index: {0}, FromId: {1}, ToId: {2}",
Index, FromId, ToId);
}
public override void Execute(WorkContext context)
{
var viewGenerator = context.IndexDefinitionStorage.GetViewGenerator(Index);
if (viewGenerator == null)
return; // index was deleted, probably
context.TransactionaStorage.Batch(actions =>
{
var docsToIndex = actions.DocumentsById(new Reference<bool>(), FromId, ToId, 100)
.Select(d => d.Item1)
.Where(x => x != null)
.Select(s => JsonToExpando.Convert(s.ToJson()));
context.IndexStorage.Index(Index, viewGenerator, docsToIndex, context, actions);
actions.Commit();
});
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I've been a software developer since 1996 and have enjoyed C# since 2003. I have a Bachelor's degree in Computer Science and for some reason, a Master's degree in Business Administration. I currently do software development contracting/consulting.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.