public virtual string GetExpression()
        {
            StringBuilder       stringBuilder = new StringBuilder();
            Collection <string> collection    = CollectionQueryBase.RemoveDuplicates(this.Items);
            int num = 0;

            foreach (string str in collection)
            {
                ++num;
                stringBuilder.Append(this.IndexFieldName + ":(");
                if (num < collection.Count)
                {
                    stringBuilder.Append(LuceneQueryHelper.Escape(str));
                    stringBuilder.Append(") ");
                    stringBuilder.Append(Enum.GetName(typeof(LuceneOperator), (object)this.InnerOperator));
                    stringBuilder.Append(" ");
                }
                else
                {
                    stringBuilder.Append(LuceneQueryHelper.Escape(str));
                    stringBuilder.Append(")");
                }
            }
            return(stringBuilder.ToString());
        }
        public string GetExpression()
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append(ContentIndexHelpers.GetIndexFieldName(Field));
            stringBuilder.Append(":");
            stringBuilder.Append(this.Inclusive ? "[" : "{");
            stringBuilder.Append(LuceneQueryHelper.Escape(this.Start));
            stringBuilder.Append(" TO ");
            stringBuilder.Append(LuceneQueryHelper.Escape(this.End));
            stringBuilder.Append(this.Inclusive ? "]" : "}");
            return(stringBuilder.ToString());
        }
Exemplo n.º 3
0
        public virtual string GetExpression()
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append(ContentIndexHelpers.GetIndexFieldName(Constants.INDEX_FIELD_NAME_VIRTUAL_PATH) + ":(");
            foreach (string virtualPathNode in this.VirtualPathNodes)
            {
                stringBuilder.Append(LuceneQueryHelper.Escape(virtualPathNode.Replace(" ", "")));
                stringBuilder.Append("|");
            }
            if (stringBuilder.Length > 0)
            {
                stringBuilder.Remove(stringBuilder.Length - 1, 1);
            }
            stringBuilder.Append("*)");
            return(stringBuilder.ToString());
        }
 public override void ReindexSite(List <SearchDocument> documents, Guid siteRootId)
 {
     lock (_writeLock)
     {
         BooleanQuery.MaxClauseCount = int.MaxValue;
         var fieldName     = ContentIndexHelpers.GetIndexFieldName(Constants.INDEX_FIELD_NAME_VIRTUAL_PATH);
         var siteRoot      = "*" + LuceneQueryHelper.Escape(siteRootId.ToString().ToLower().Replace(" ", "")) + "*";
         var siteRootQuery = $"{fieldName}:{siteRoot}";
         var queryParser   = new QueryParser(LuceneConfiguration.LuceneVersion, fieldName, LuceneConfiguration.Analyzer);
         queryParser.AllowLeadingWildcard = true;
         var deleteQuery = queryParser.Parse(siteRootQuery);
         _indexWriter.DeleteDocuments(deleteQuery);
         foreach (var document in documents)
         {
             _indexWriter.AddDocument(document.Document);
         }
     }
 }
Exemplo n.º 5
0
        public virtual void ReindexSite(List <SearchDocument> documents, Guid siteRootId)
        {
            if (!LuceneContext.AllowIndexing)
            {
                return;
            }
            var deletedList = new List <SearchDocument>();

            try
            {
                lock (_writeLock)
                {
                    BooleanQuery.MaxClauseCount = int.MaxValue;
                    var fieldName     = ContentIndexHelpers.GetIndexFieldName(Constants.INDEX_FIELD_NAME_VIRTUAL_PATH);
                    var siteRoot      = "*" + LuceneQueryHelper.Escape(siteRootId.ToString().ToLower().Replace(" ", "")) + "*";
                    var siteRootQuery = $"{fieldName}:{siteRoot}";
                    var queryParser   = new QueryParser(LuceneConfiguration.LuceneVersion, fieldName, LuceneConfiguration.Analyzer);
                    queryParser.AllowLeadingWildcard = true;
                    var deleteQuery = queryParser.Parse(siteRootQuery);
                    using (IndexWriter indexWriter = new IndexWriter(LuceneContext.Directory, LuceneConfiguration.Analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED))
                    {
                        indexWriter.SetMergeScheduler(new SerialMergeScheduler());
                        indexWriter.DeleteDocuments(deleteQuery);
                        foreach (var document in documents)
                        {
                            indexWriter.AddDocument(document.Document);
                        }
                        indexWriter.Commit();
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Lucene Search Error", ex);
            }
            finally
            {
                if (IndexWriter.IsLocked(LuceneContext.Directory))
                {
                    IndexWriter.Unlock(LuceneContext.Directory);
                }
            }
        }
Exemplo n.º 6
0
        public string GetExpression()
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append(ContentIndexHelpers.GetIndexFieldName(FieldName));
            stringBuilder.Append(":(");
            stringBuilder.Append(LuceneQueryHelper.EscapeParenthesis(Value));
            if (UseWildCard)
            {
                stringBuilder.Append("*");
            }
            if (Boost.HasValue)
            {
                stringBuilder.Append($"^{Boost}");
            }
            stringBuilder.Append(")");

            return(stringBuilder.ToString());
        }