private IEnumerable<string> GetAuthorsFromIndex()
        {
            var terms = new List<string>();
            using (var context = new SortableIndexSearchContext(SearchManager.GetIndex(Util.Constants.Index.Name)))
            {
                var termsByField = context.Searcher.GetIndexReader().Terms(new Term("__created by", string.Empty));
                while (termsByField.Next())
                {
                    if (termsByField.Term().Field() == "__created by")
                    {
                       terms.Add(termsByField.Term().Text());
                    }
                    else
                    {
                        break;
                    }
                }
            }

            terms.Sort();
            return terms;
        }
示例#2
0
        public IEnumerable<string> GetPossibleValues()
        {
            var terms = new List<string>();
            using (var context = new SortableIndexSearchContext(SearchManager.GetIndex(IndexName)))
            {
                var termsByField = context.Searcher.GetIndexReader().Terms(new Term(FieldName.ToLower(), string.Empty));
                while (termsByField.Next())
                {
                    if (termsByField.Term().Field().Equals(FieldName, StringComparison.InvariantCultureIgnoreCase))
                    {
                        terms.Add(termsByField.Term().Text());
                    }
                    else
                    {
                        break;
                    }
                }
            }

            terms.Sort();
            return terms.ToArray();
        }
        public static List<List<FacetReturn>> GetFacets(List<SearchStringModel> _searchQuery)
        {
            var ret = new List<List<FacetReturn>>();
            var facets = Context.ContentDatabase.GetItem(Constants.FacetFolder).Children;
            foreach (Item facet in facets)
            {
                if (facet.Fields["Enabled"].Value == "1")
                {
                    var type = Activator.CreateInstance(Type.GetType(facet.Fields["Type"].Value));
                    if ((type as IFacet).IsNotNull())
                    {
                        var locationOverride = GetLocationOverride(_searchQuery);
                        var indexName = BucketManager.GetContextIndex(Context.ContentDatabase.GetItem(locationOverride));
                        using (var searcher = new IndexSearcher(indexName))
                        using (var context = new SortableIndexSearchContext(searcher.Index))
                        {
                            var query = SearchHelper.GetBaseQuery(_searchQuery, locationOverride);
                            var queryBase = searcher.ContructQuery(query);
                            var searchBitArray = new QueryFilter(queryBase).Bits(context.Searcher.GetIndexReader());
                            var res = ((IFacet)type).Filter(queryBase, _searchQuery, locationOverride, searchBitArray);
                            ret.Add(res);
                        }
                    }
                }
            }

            return ret;
        }
示例#4
0
        public virtual KeyValuePair<int, List<SitecoreItem>> RunQuery(Query query, int pageSize, int pageNumber, string sortField, string sortDirection)
        {
            var items = new List<SitecoreItem>();
            int hitCount;
            if (Config.EnableBucketDebug || Constants.EnableTemporaryBucketDebug)
            {
                Log.Info("Bucket Debug Query: " + query, this);
            }

            if (Config.SOLREnabled == "true")
            {
                GetValue(query, items);
                return new KeyValuePair<int, List<SitecoreItem>>(items.Count, items);
            }
            else
            {
                if(Index is Index)
                {
                    (Index as Index).Analyzer = new StandardAnalyzer(Consts.StopWords);
                }
                using (var context = new SortableIndexSearchContext(Index))
                {
                    BooleanQuery.SetMaxClauseCount(Config.LuceneMaxClauseCount);
                    var sortingDir = sortDirection == "asc" ? false : true;
                    var searchHits = string.IsNullOrWhiteSpace(sortField)
                                         ? context.Search(query)
                                         : context.Search(query, new Sort(sortField, sortingDir));
                    if (searchHits.IsNull())
                    {
                        return new KeyValuePair<int, List<SitecoreItem>>();
                    }

                    hitCount = searchHits.Length;
                    if (pageSize == 0)
                    {
                        pageSize = searchHits.Length;
                    }

                    if (pageNumber == 1)
                    {
                        pageNumber = 1;
                    }

                    var resultCollection = new SearchResultCollection();

                    resultCollection = searchHits.FetchResults((pageNumber - 1) * pageSize, pageSize);

                    SearchHelper.GetItemsFromSearchResult(resultCollection, items);
                }
                return new KeyValuePair<int, List<SitecoreItem>>(hitCount, items);
            }
        }
示例#5
0
        public virtual Dictionary<string, int> RunFacet(Query query, bool showAllVersions, bool isFacet, bool isIdLookup, int pageSize, int pageNumber, string termName, List<string> termValue, BitArray queryBase, string locationFilter)
        {
            var runningCOunt = new Dictionary<string, int>();
            var db = Context.ContentDatabase ?? Sitecore.Context.Database;
            var indexName = BucketManager.GetContextIndex(db.GetItem(locationFilter));

            if (indexName.EndsWith("_remote"))
            {
                Index = RemoteSearchManager.GetIndex(indexName) as RemoteIndex;
            }
            else if (indexName.EndsWith("_inmemory"))
            {
                Index = InMemorySearchManager.GetIndex(indexName) as InMemoryIndex;
            }
            else
            {
                Index = SearchManager.GetIndex(indexName) as Index;
            }
            using (var context = new SortableIndexSearchContext(Index))
            {
                if (Config.EnableBucketDebug || Constants.EnableTemporaryBucketDebug)
                {
                    Log.Info("Using: " + indexName, this);
                    Log.Info("Bucket Facet Original Debug Query: " + query, this);
                }

                foreach (var terms in termValue)
                {
                    var genreQueryFilter = GenreQueryFilter(query, isFacet, isIdLookup, termName, terms);
                    var tempSearchArray = queryBase.Clone() as BitArray;
                    if (Config.EnableBucketDebug || Constants.EnableTemporaryBucketDebug)
                    {
                        Log.Info("Bucket Facet Debug Query: " + genreQueryFilter, this);
                    }

                    BitArray genreBitArray = genreQueryFilter.Bits(context.Searcher.GetIndexReader());
                    if (tempSearchArray.Length == genreBitArray.Length)
                    {
                        BitArray combinedResults = tempSearchArray.And(genreBitArray);

                        var cardinality = SearchHelper.GetCardinality(combinedResults);

                        if (cardinality > 0)
                        {
                            if (!isFacet)
                            {
                                if (!runningCOunt.ContainsKey(terms))
                                {
                                    runningCOunt.Add(terms, cardinality);
                                }
                            }
                            else
                            {
                                if (!runningCOunt.ContainsKey(terms))
                                {
                                    runningCOunt.Add(terms, cardinality);
                                }
                            }
                        }
                    }
                }
            }

            return runningCOunt;
        }
            private void ExportIndexSchema(string str)
            {
                //Load xml
                XDocument xdoc = XDocument.Load(path + @"\sitecore modules\Shell\Sitecore\ItemBuckets\Services\schema_template.xml");
                var index = SearchManager.GetIndex(str);
                if (index != null)
                {

                    using (var context = new SortableIndexSearchContext(index))
                    {
                        //Run query
                        foreach (var field in context.Searcher.GetIndexReader().GetFieldNames(IndexReader.FieldOption.ALL))
                        {
                            xdoc.Element("schema").Element("fields").Add(new XElement("field", new XAttribute("name", field),
                                                                             new XAttribute("type", "string"),
                                                                             new XAttribute("indexed", "true"),
                                                                             new XAttribute("stored", "true")));
                        }

                    }
                }
                var WriteFileStream = new XmlTextWriter(path + @"\sitecore modules\Shell\Sitecore\ItemBuckets\Services\schema.xml", Encoding.UTF8);

                xdoc.Save(WriteFileStream);
                WriteFileStream.Close();
            }
        private List<List<FacetReturn>> GetFacets()
        {
            var ret = new List<List<FacetReturn>>();
            var facets = Context.ContentDatabase.GetItem(Constants.FacetFolder).Children;
            foreach (Item facet in facets)
            {
                if (facet.Fields["Enabled"].Value == "1")
                {
                    // pull the type off of the Sitecore item
                    string typeName = facet.Fields["Type"].Value;
                    object type = Sitecore.Reflection.ReflectionUtil.CreateObject(typeName);

                    // pull any parameters out of the Sitecore item
                    string typeParameters = facet.Fields["Parameters"].Value;
                    if (!string.IsNullOrEmpty(typeParameters))
                    {
                        Sitecore.Reflection.ReflectionUtil.SetProperties(type, typeParameters);
                    }

                    if ((type as IFacet).IsNotNull())
                    {
                        var locationOverride = GetLocationOverride();
                        using (var context = new SortableIndexSearchContext(SearchManager.GetIndex(BucketManager.GetContextIndex(Context.ContentDatabase.GetItem(locationOverride)))))
                        {

                            var query = SearchHelper.GetBaseQuery(this._searchQuery, locationOverride);
                            var queryBase = IndexSearcher.ContructQuery(query);
                            var searchBitArray = new QueryFilter(queryBase).Bits(context.Searcher.GetIndexReader());
                            var res = ((IFacet)type).Filter(queryBase, this._searchQuery, locationOverride, searchBitArray);
                            ret.Add(res);
                        }
                    }
                }
            }

            return ret;
        }
        private static IEnumerable<string> GetExtensionsFromIndex()
        {
            var terms = new List<string>();
            using (var context = new SortableIndexSearchContext(SearchManager.GetIndex("itembuckets_medialibrary")))
            {
                var termsByField = context.Searcher.GetIndexReader().Terms(new Term("extension", string.Empty));
                while (termsByField.Next())
                {
                    if (termsByField.Term().Field() == "extension")
                    {
                        terms.Add(termsByField.Term().Text());
                    }
                    else
                    {
                        break;
                    }
                }
            }

            return terms;
        }
 private static IEnumerable<string> GetAllIndexFields()
 {
     var terms = new List<string>();
     using (var context = new SortableIndexSearchContext(SearchManager.GetIndex(Constants.Index.Name)))
     {
         var fieldsInIndex = context.Searcher.GetIndexReader().GetFieldNames(IndexReader.FieldOption.ALL).OfType<string>();
         terms.AddRange(fieldsInIndex);
     }
     return terms;
 }
        /// <summary>
        /// Gets the facets.
        /// </summary>
        /// <param name="searchQuery">The _search query.</param>
        /// <returns>The list of the facets.</returns>
        public static List<List<FacetReturn>> GetFacets(List<SearchStringModel> searchQuery)
        {
            var ret = new List<List<FacetReturn>>();
              ChildList facets = Context.ContentDatabase.GetItem(Constants.FacetFolder).Children;
              foreach (Item facet in facets)
              {
            if (facet.Fields["Enabled"].Value == "1")
            {
              dynamic type = Activator.CreateInstance(Type.GetType(facet.Fields["Type"].Value));
              if ((type as IFacet).IsNotNull())
              {
            string locationOverride = GetLocationOverride(searchQuery);
            using (
              var context =
                new SortableIndexSearchContext(
                  SearchManager.GetIndex(GetContextIndex(Context.ContentDatabase.GetItem(locationOverride)))))
            {
              DateRangeSearchParam query = SearchHelper.GetBaseQuery(searchQuery, locationOverride);
              BooleanQuery queryBase = IndexSearcher.ContructQuery(query);
              BitArray searchBitArray = new QueryFilter(queryBase).Bits(context.Searcher.GetIndexReader());
              List<FacetReturn> res = ((IFacet)type).Filter(queryBase, searchQuery, locationOverride, searchBitArray);
              ret.Add(res);
            }
              }
            }
              }

              return ret;
        }