public TermsQueryResultServerSide ExecuteGetTermsQuery(string indexName, string field, string fromValue, long?existingResultEtag, int pageSize, DocumentsOperationContext context, OperationCancelToken token, out Index index) { ObjectDisposedException lastException = null; for (var i = 0; i < NumberOfRetries; i++) { try { index = GetIndex(indexName); var etag = index.GetIndexEtag(null); if (etag == existingResultEtag) { return(TermsQueryResultServerSide.NotModifiedResult); } return(index.GetTerms(field, fromValue, pageSize, context, token)); } catch (ObjectDisposedException e) { if (Database.DatabaseShutdown.IsCancellationRequested) { throw; } lastException = e; } } throw CreateRetriesFailedException(lastException); }
public TermsQueryResultServerSide ExecuteGetTermsQuery(string indexName, string field, string fromValue, long?existingResultEtag, int pageSize, QueryOperationContext queryContext, OperationCancelToken token, out Index index) { Exception lastException = null; for (var i = 0; i < NumberOfRetries; i++) { try { index = GetIndex(indexName); queryContext.WithIndex(index); var etag = index.GetIndexEtag(queryContext, null); if (etag == existingResultEtag) { return(TermsQueryResultServerSide.NotModifiedResult); } return(index.GetTerms(field, fromValue, pageSize, queryContext, token)); } catch (ObjectDisposedException e) { if (Database.DatabaseShutdown.IsCancellationRequested) { throw; } lastException = e; WaitForIndexBeingLikelyReplacedDuringQuery().GetAwaiter().GetResult(); } catch (OperationCanceledException e) { if (Database.DatabaseShutdown.IsCancellationRequested) { throw; } if (token.Token.IsCancellationRequested) { throw; } lastException = e; WaitForIndexBeingLikelyReplacedDuringQuery().GetAwaiter().GetResult(); } } throw CreateRetriesFailedException(lastException); }
protected async Task <SuggestionQueryResult> ExecuteSuggestion( IndexQueryServerSide query, Index index, QueryOperationContext queryContext, long?existingResultEtag, OperationCancelToken token) { if (query.Metadata.SelectFields.Length == 0) { throw new InvalidQueryException("Suggestion query must have at least one suggest token in SELECT.", query.Metadata.QueryText, query.QueryParameters); } var fields = index.Definition.IndexFields; foreach (var f in query.Metadata.SelectFields) { if (f.IsSuggest == false) { throw new InvalidQueryException("Suggestion query must have only suggest tokens in SELECT.", query.Metadata.QueryText, query.QueryParameters); } var selectField = (SuggestionField)f; if (fields.TryGetValue(selectField.Name, out var field) == false) { throw new InvalidOperationException($"Index '{index.Name}' does not have a field '{selectField.Name}'."); } if (field.HasSuggestions == false) { throw new InvalidOperationException($"Index '{index.Name}' does not have suggestions configured for field '{selectField.Name}'."); } } if (existingResultEtag.HasValue) { var etag = index.GetIndexEtag(queryContext, query.Metadata); if (etag == existingResultEtag.Value) { return(SuggestionQueryResult.NotModifiedResult); } } return(await index.SuggestionQuery(query, queryContext, token)); }