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; }
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; }
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); } }
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; }