private void MoreLikeThis(DocumentsOperationContext context, OperationCancelToken token, HttpMethod method) { var existingResultEtag = GetLongFromHeaders("If-None-Match"); var query = GetMoreLikeThisQuery(context, method); var runner = new QueryRunner(Database, context); var result = runner.ExecuteMoreLikeThisQuery(query, context, existingResultEtag, token); if (result.NotModified) { HttpContext.Response.StatusCode = (int)HttpStatusCode.NotModified; return; } HttpContext.Response.Headers[Constants.Headers.Etag] = CharExtensions.ToInvariantString(result.ResultEtag); int numberOfResults; using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { writer.WriteMoreLikeThisQueryResult(context, result, out numberOfResults); } AddPagingPerformanceHint(PagingOperationType.Queries, $"{nameof(MoreLikeThis)} ({query.Metadata.IndexName})", HttpContext, numberOfResults, query.PageSize, TimeSpan.FromMilliseconds(result.DurationInMs)); }
private void MoreLikeThis(DocumentsOperationContext context, string indexName, OperationCancelToken token) { var existingResultEtag = GetLongFromHeaders("If-None-Match"); var query = MoreLikeThisQueryServerSide.Create(HttpContext, GetPageSize(Database.Configuration.Core.MaxPageSize), context); var runner = new QueryRunner(Database, context); var result = runner.ExecuteMoreLikeThisQuery(indexName, query, context, existingResultEtag, token); if (result.NotModified) { HttpContext.Response.StatusCode = 304; return; } HttpContext.Response.Headers[Constants.MetadataEtagField] = result.ResultEtag.ToInvariantString(); using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { writer.WriteQueryResult(context, result, metadataOnly: false); } }