public void DeleteAllDocuments(BaristaIndexDefinition indexDefinition)
 {
     ExecuteRestRequest("DeleteAllDocuments", Method.POST, request => request.AddBody(new
     {
         indexDefinition
     }));
 }
 public void Shutdown(BaristaIndexDefinition indexDefinition)
 {
     ExecuteRestRequest("Shutdown", Method.POST, request => request.AddBody(new
     {
         indexDefinition
     }));
 }
Exemplo n.º 3
0
        public int SearchResultCount(BaristaIndexDefinition indexDefinition, SearchArguments arguments)
        {
            if (arguments == null)
            {
                arguments = new SearchArguments();
            }

            try
            {
                var index        = GetOrAddIndex(indexDefinition, true);
                var searchParams = GetLuceneSearchParams(arguments);

                IndexSearcher indexSearcher;
                using (index.GetSearcher(out indexSearcher))
                {
                    if (searchParams.Skip.HasValue == false)
                    {
                        var hits = indexSearcher.Search(searchParams.Query, searchParams.Filter, searchParams.MaxResults, searchParams.Sort);
                        return(hits.ScoreDocs.Count());
                    }
                    else
                    {
                        var hits = indexSearcher.Search(searchParams.Query, searchParams.Filter, searchParams.MaxResults + searchParams.Skip.Value, searchParams.Sort);
                        return(hits.ScoreDocs
                               .Skip(searchParams.Skip.Value)
                               .Take(searchParams.MaxResults)
                               .Count());
                    }
                }
            }
            catch (Exception ex)
            {
                throw new FaultException(ex.Message);
            }
        }
        public void IndexJsonDocument(BaristaIndexDefinition indexDefinition, string documentId, object docObject, object metadata, IEnumerable <FieldOptions> fieldOptions)
        {
            try
            {
                using (var searchClient = GetSearchClient())
                {
                    var document = new JsonDocumentDto
                    {
                        DocumentId = documentId,
                        DataAsJson = JsonConvert.SerializeObject(docObject, Formatting.Indented, SerializerSettings),
                    };

                    if (metadata != null)
                    {
                        document.MetadataAsJson = JsonConvert.SerializeObject(metadata, Formatting.Indented, SerializerSettings);
                    }

                    if (fieldOptions != null)
                    {
                        document.FieldOptions = fieldOptions;
                    }

                    searchClient.IndexJsonDocument(indexDefinition, document);
                }
            }
            catch (CommunicationObjectFaultedException ex)
            {
                if (ex.InnerException != null)
                {
                    throw ex.InnerException;
                }
                throw;
            }
        }
 public void IndexJsonDocuments(BaristaIndexDefinition indexDefinition, IEnumerable <JsonDocumentDto> documents)
 {
     ExecuteRestRequest("IndexJsonDocuments", Method.POST, request => request.AddBody(new
     {
         indexDefinition,
         documents
     }));
 }
 public void DeleteDocuments(BaristaIndexDefinition indexDefinition, IEnumerable <string> documentIds)
 {
     ExecuteRestRequest("DeleteDocuments", Method.POST, request => request.AddBody(new
     {
         indexDefinition,
         documentIds
     }));
 }
 public void SetFieldOptions(BaristaIndexDefinition indexDefinition, IEnumerable <FieldOptions> fieldOptions)
 {
     ExecuteRestRequest("SetFieldOptions", Method.POST, request => request.AddBody(new
     {
         indexDefinition,
         fieldOptions
     }));
 }
 public void IndexJsonDocument(BaristaIndexDefinition indexDefinition, JsonDocumentDto document)
 {
     ExecuteRestRequest("IndexJsonDocument", Method.POST, request => request.AddBody(new
     {
         indexDefinition,
         document
     }));
 }
Exemplo n.º 9
0
        public static void CloseIndexWriter(BaristaIndexDefinition indexDefinition, bool waitForMerges)
        {
            Index index;

            if (Indexes.TryRemove(indexDefinition, out index))
            {
                index.Dispose();
            }
        }
        public ICollection <string> GetFieldNames(BaristaIndexDefinition indexDefinition)
        {
            var response = ExecuteRestRequest <Collection <string> >("GetFieldNames", Method.POST,
                                                                     request => request.AddBody(new
            {
                indexDefinition
            }));

            return(response.Data);
        }
        public bool DoesIndexExist(BaristaIndexDefinition indexDefinition)
        {
            var response = ExecuteRestRequest <bool>("DoesIndexExist", Method.POST,
                                                     request => request.AddBody(new
            {
                indexDefinition
            }));

            return(response.Data);
        }
        public int SearchResultCount(BaristaIndexDefinition indexDefinition, SearchArguments arguments)
        {
            var response = ExecuteRestRequest <int>("SearchResultCount", Method.POST, request => request.AddBody(new
            {
                indexDefinition,
                arguments
            }));

            return(response.Data);
        }
        public IList <FacetedSearchResult> FacetedSearch(BaristaIndexDefinition indexDefinition, SearchArguments arguments)
        {
            var response = ExecuteRestRequest <List <FacetedSearchResult> >("FacetedSearch", Method.POST, request => request.AddBody(new
            {
                indexDefinition,
                arguments
            }));

            return(response.Data);
        }
        public JsonDocumentDto Retrieve(BaristaIndexDefinition indexDefinition, string documentId)
        {
            var response = ExecuteRestRequest <JsonDocumentDto>("Retrieve", Method.POST, request => request.AddBody(new
            {
                indexDefinition,
                documentId
            }));

            return(response.Data);
        }
Exemplo n.º 15
0
        public ICollection <string> GetFieldNames(BaristaIndexDefinition indexDefinition)
        {
            var           index = GetOrAddIndex(indexDefinition, true);
            IndexSearcher indexSearcher;

            using (index.GetSearcher(out indexSearcher))
            {
                var fieldNames = indexSearcher.IndexReader.GetFieldNames(IndexReader.FieldOption.ALL);
                return(fieldNames);
            }
        }
        public Explanation Explain(BaristaIndexDefinition indexDefinition, Query query, int documentId)
        {
            var response = ExecuteRestRequest <Explanation>("Explain", Method.POST, request => request.AddBody(new
            {
                indexDefinition,
                query,
                documentId
            }));

            return(response.Data);
        }
Exemplo n.º 17
0
 public void Shutdown(BaristaIndexDefinition indexDefinition)
 {
     try
     {
         CloseIndexWriter(indexDefinition, true);
     }
     catch (Exception ex)
     {
         throw new FaultException(ex.Message);
     }
 }
Exemplo n.º 18
0
        /// <summary>
        /// Utility method to retrieve the specifed index, optionally creating the index if it is missing.
        /// </summary>
        /// <param name="indexDefinition"></param>
        /// <param name="createIfMissing"></param>
        /// <returns></returns>
        protected Index GetOrAddIndex(BaristaIndexDefinition indexDefinition, bool createIfMissing)
        {
            //Index name is case insensitive.
            indexDefinition.IndexName = indexDefinition.IndexName.ToLowerInvariant();

            return(Indexes.GetOrAdd(indexDefinition, key =>
            {
                var targetDirectory = GetLuceneDirectoryFromIndexDefinition(indexDefinition);

                var luceneIndexDefinition = new IndexDefinition();

                if (!IndexReader.IndexExists(targetDirectory))
                {
                    if (createIfMissing == false)
                    {
                        throw new InvalidOperationException("Index does not exist: " + targetDirectory);
                    }

                    WriteIndexVersion(targetDirectory);

                    //creating index structure if we need to
                    new IndexWriter(targetDirectory, DummyAnalyzer, IndexWriter.MaxFieldLength.UNLIMITED).Dispose();
                }
                else
                {
                    if (!EnsureIndexVersionMatches(luceneIndexDefinition.Name, targetDirectory))
                    {
                        CheckIndexAndRecover(targetDirectory, indexDefinition.IndexName);
                        targetDirectory.DeleteFile("writing-to-index.lock");
                        WriteIndexVersion(targetDirectory);
                    }

                    if (targetDirectory.FileExists("write.lock"))  // force lock release, because it was still open when we shut down
                    {
                        IndexWriter.Unlock(targetDirectory);
                        // for some reason, just calling unlock doesn't remove this file
                        targetDirectory.DeleteFile("write.lock");
                    }

                    if (targetDirectory.FileExists("writing-to-index.lock"))   // we had an unclean shutdown
                    {
                        //if (configuration.ResetIndexOnUncleanShutdown)
                        //  throw new InvalidOperationException("Rude shutdown detected on: " + indexDirectory);

                        CheckIndexAndRecover(targetDirectory, indexDefinition.IndexName);
                        targetDirectory.DeleteFile("writing-to-index.lock");
                    }
                }

                var simpleIndex = new SimpleIndex(targetDirectory, "DefaultIndex", luceneIndexDefinition);
                return simpleIndex;
            }));
        }
        public string Highlight(BaristaIndexDefinition indexDefinition, Query query, int documentId, string fieldName, int fragCharSize)
        {
            var response = ExecuteRestRequest("Highlight", Method.POST, request => request.AddBody(new
            {
                indexDefinition,
                query,
                documentId,
                fieldName,
                fragCharSize
            }));

            return(response.Content);
        }
Exemplo n.º 20
0
        public Explanation Explain(BaristaIndexDefinition indexDefinition, Barista.Search.Query query, int docId)
        {
            var         lQuery = Barista.Search.Query.ConvertQueryToLuceneQuery(query);
            Explanation explanation;

            var           index = GetOrAddIndex(indexDefinition, true);
            IndexSearcher indexSearcher;

            using (index.GetSearcher(out indexSearcher))
            {
                var lexplanation = indexSearcher.Explain(lQuery, docId);
                explanation = Explanation.ConvertLuceneExplanationToExplanation(lexplanation);
            }

            return(explanation);
        }
 public IList <FacetedSearchResult> FacetedSearch(BaristaIndexDefinition indexDefinition, SearchArguments arguments)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             return(searchClient.FacetedSearch(indexDefinition, arguments));
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }
 JsonDocumentDto Retrieve(BaristaIndexDefinition indexDefinition, string documentId)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             return(searchClient.Retrieve(indexDefinition, documentId));
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }
 public void IndexJsonDocuments(BaristaIndexDefinition indexDefinition, IEnumerable <JsonDocumentDto> documents)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             searchClient.IndexJsonDocuments(indexDefinition, documents);
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }
 public void IndexDocument(BaristaIndexDefinition indexDefinition, string documentId, DocumentDto document)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             searchClient.IndexDocument(indexDefinition, documentId, document);
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }
 public string Highlight(BaristaIndexDefinition indexDefinition, Query query, int documentId, string fieldName, int fragCharSize)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             return(searchClient.Highlight(indexDefinition, query, documentId, fieldName, fragCharSize));
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }
 public ICollection <string> GetFieldNames(BaristaIndexDefinition indexDefinition)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             return(searchClient.GetFieldNames(indexDefinition));
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }
 public bool DoesIndexExist(BaristaIndexDefinition indexDefinition)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             return(searchClient.DoesIndexExist(indexDefinition));
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }
 public void SetFieldOptions(BaristaIndexDefinition indexDefinition, IEnumerable <FieldOptions> fieldOptions)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             searchClient.SetFieldOptions(indexDefinition, fieldOptions);
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }
 public void Shutdown(BaristaIndexDefinition indexDefinition)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             searchClient.Shutdown(indexDefinition);
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }
 public Explanation Explain(BaristaIndexDefinition indexDefinition, Query query, int documentId)
 {
     try
     {
         using (var searchClient = GetSearchClient())
         {
             return(searchClient.Explain(indexDefinition, query, documentId));
         }
     }
     catch (CommunicationObjectFaultedException ex)
     {
         if (ex.InnerException != null)
         {
             throw ex.InnerException;
         }
         throw;
     }
 }