public IndexReadOperation(Index index, LuceneVoronDirectory directory, IndexSearcherHolder searcherHolder, QueryBuilderFactories queryBuilderFactories, Transaction readTransaction) : base(index, LoggingSource.Instance.GetLogger <IndexReadOperation>(index._indexStorage.DocumentDatabase.Name)) { try { _analyzer = CreateAnalyzer(() => new LowerCaseKeywordAnalyzer(), index.Definition, forQuerying: true); } catch (Exception e) { throw new IndexAnalyzerException(e); } _queryBuilderFactories = queryBuilderFactories; _maxNumberOfOutputsPerDocument = index.MaxNumberOfOutputsPerDocument; _indexType = index.Type; _indexHasBoostedFields = index.HasBoostedFields; _releaseReadTransaction = directory.SetTransaction(readTransaction, out _state); _releaseSearcher = searcherHolder.GetSearcher(readTransaction, _state, out _searcher); }
public IndexFacetedReadOperation(Index index, IndexDefinitionBaseServerSide indexDefinition, LuceneVoronDirectory directory, IndexSearcherHolder searcherHolder, QueryBuilderFactories queryBuilderFactories, Transaction readTransaction, DocumentDatabase documentDatabase) : base(index, LoggingSource.Instance.GetLogger <IndexFacetedReadOperation>(documentDatabase.Name)) { try { _analyzer = CreateAnalyzer(index, indexDefinition, forQuerying: true); } catch (Exception e) { throw new IndexAnalyzerException(e); } _queryBuilderFactories = queryBuilderFactories; _releaseReadTransaction = directory.SetTransaction(readTransaction, out _state); _releaseSearcher = searcherHolder.GetSearcher(readTransaction, _state, out _searcher); }
public IndexFacetedReadOperation(Index index, Dictionary <string, IndexField> fields, LuceneVoronDirectory directory, IndexSearcherHolder searcherHolder, QueryBuilderFactories queryBuilderFactories, Transaction readTransaction, DocumentDatabase documentDatabase) : base(index, LoggingSource.Instance.GetLogger <IndexFacetedReadOperation>(documentDatabase.Name)) { try { _analyzer = CreateAnalyzer(() => new LowerCaseKeywordAnalyzer(), fields, forQuerying: true); } catch (Exception e) { throw new IndexAnalyzerException(e); } _queryBuilderFactories = queryBuilderFactories; _releaseReadTransaction = directory.SetTransaction(readTransaction, out _state); _currentStateHolder = searcherHolder.GetStateHolder(readTransaction); _searcher = _currentStateHolder.GetIndexSearcher(_state); }
protected Query GetLuceneQuery(DocumentsOperationContext context, QueryMetadata metadata, QueryExpression whereExpression, BlittableJsonReaderObject parameters, Analyzer analyzer, QueryBuilderFactories factories) { Query documentQuery; if (string.IsNullOrEmpty(metadata.QueryText)) { if (_logger.IsInfoEnabled) { _logger.Info($"Issuing query on index {_indexName} for all documents"); } documentQuery = new MatchAllDocsQuery(); } else { if (_logger.IsInfoEnabled) { _logger.Info($"Issuing query on index {_indexName} for: {metadata.Query}"); } // RavenPerFieldAnalyzerWrapper searchAnalyzer = null; try { //_persistence._a //searchAnalyzer = parent.CreateAnalyzer(new LowerCaseKeywordAnalyzer(), toDispose, true); //searchAnalyzer = parent.AnalyzerGenerators.Aggregate(searchAnalyzer, (currentAnalyzer, generator) => //{ // Analyzer newAnalyzer = generator.GenerateAnalyzerForQuerying(parent.PublicName, query.Query, currentAnalyzer); // if (newAnalyzer != currentAnalyzer) // { // DisposeAnalyzerAndFriends(toDispose, currentAnalyzer); // } // return parent.CreateAnalyzer(newAnalyzer, toDispose, true); //}); IDisposable releaseServerContext = null; IDisposable closeServerTransaction = null; TransactionOperationContext serverContext = null; try { if (metadata.HasCmpXchg) { releaseServerContext = context.DocumentDatabase.ServerStore.ContextPool.AllocateOperationContext(out serverContext); closeServerTransaction = serverContext.OpenReadTransaction(); } using (closeServerTransaction) documentQuery = QueryBuilder.BuildQuery(serverContext, context, metadata, whereExpression, _index.Definition, parameters, analyzer, factories); } finally { releaseServerContext?.Dispose(); } } finally { //DisposeAnalyzerAndFriends(toDispose, searchAnalyzer); } } //var afterTriggers = ApplyIndexTriggers(documentQuery); return(documentQuery); }
protected Query GetLuceneQuery(DocumentsOperationContext context, QueryMetadata metadata, BlittableJsonReaderObject parameters, Analyzer analyzer, QueryBuilderFactories factories) { return(GetLuceneQuery(context, metadata, metadata.Query.Where, parameters, analyzer, factories)); }
protected Query GetLuceneQuery(JsonOperationContext context, QueryMetadata metadata, QueryExpression whereExpression, BlittableJsonReaderObject parameters, Analyzer analyzer, QueryBuilderFactories factories) { Query documentQuery; if (string.IsNullOrEmpty(metadata.QueryText)) { if (_logger.IsInfoEnabled) { _logger.Info($"Issuing query on index {_indexName} for all documents"); } documentQuery = new MatchAllDocsQuery(); } else { if (_logger.IsInfoEnabled) { _logger.Info($"Issuing query on index {_indexName} for: {metadata.Query}"); } // RavenPerFieldAnalyzerWrapper searchAnalyzer = null; try { //_persistance._a //searchAnalyzer = parent.CreateAnalyzer(new LowerCaseKeywordAnalyzer(), toDispose, true); //searchAnalyzer = parent.AnalyzerGenerators.Aggregate(searchAnalyzer, (currentAnalyzer, generator) => //{ // Analyzer newAnalyzer = generator.GenerateAnalyzerForQuerying(parent.PublicName, query.Query, currentAnalyzer); // if (newAnalyzer != currentAnalyzer) // { // DisposeAnalyzerAndFriends(toDispose, currentAnalyzer); // } // return parent.CreateAnalyzer(newAnalyzer, toDispose, true); //}); documentQuery = QueryBuilder.BuildQuery(context, metadata, whereExpression, parameters, analyzer, factories); } finally { //DisposeAnalyzerAndFriends(toDispose, searchAnalyzer); } } //var afterTriggers = ApplyIndexTriggers(documentQuery); return(documentQuery); }
protected Query GetLuceneQuery(QueryMetadata metadata, BlittableJsonReaderObject parameters, Analyzer analyzer, QueryBuilderFactories factories) { return(GetLuceneQuery(metadata, metadata.Query.Where, parameters, analyzer, factories)); }