public void ApplySelectedFilterTags(IDictionary <string, ISet <string> > tags) { if (tags != null) { var cultureInfo = new Guid(_request.LanguageId).GetLanguage()?.CultureInfo; foreach (var tag in tags.Where(x => x.Value.Count > 0)) { var tagName = tag.Key.GetFieldDefinitionForProducts()?.GetTagName(cultureInfo) ?? tag.Key; if (tag.Value.Count > 1) { var tagClause = new OptionalTagClause(); foreach (var tagValue in tag.Value) { var value = string.Concat("\"", tagValue, "\""); tagClause.Tags.Add(new Tag(tagName, value.ToLower(CultureInfo.CurrentCulture)) { Analyzer = "keyword" }); } _request.FilterTags.Add(tagClause); } else { _request.FilterTags.Add(new Tag(tagName, string.Concat("\"", tag.Value.First().ToLower(CultureInfo.CurrentCulture), "\"")) { Analyzer = "keyword" }); } } } }
public void ApplyFreeTextSearchTags() { var text = _searchQuery.Text; if (string.IsNullOrEmpty(text)) { return; } var textTermClause = new MandatoryTagClause(); foreach (var term in FilterTerms(SearchStringHelper.ExtractTerms(text))) { var textClause = new OptionalTagClause(); textClause.Tags.Add(new Tag(Foundation.Search.Constants.TagNames.Body, term) { AllowFuzzy = true }); textClause.Tags.Add(new Tag(Foundation.Search.Constants.TagNames.Body, term + "*")); textClause.Tags.Add(new Tag(Foundation.Search.Constants.TagNames.Body, "*" + term)); textClause.Tags.Add(new Tag(Foundation.Search.Constants.TagNames.Body, term)); if (textClause.TagsExist) { textTermClause.Tags.Add(textClause); } } if (textTermClause.TagsExist) { _request.QueryTags.Add(textTermClause); } }
public void ApplySelectedFilterCategories() { if (_searchQuery.Category.Count > 0) { var op = new OptionalTagClause(); foreach (var item in _searchQuery.Category) { op.Tags.Add(new Tag(TagNames.CategorySystemId, item)); } _request.FilterTags.Add(op); } }
public void ApplyOrganizationSearchTags() { if (_personStorage.CurrentSelectedOrganization != null) { var tagClause = new OptionalTagClause(); tagClause.Tags.Add(new Tag(_organizationPointer, Guid.Empty)); tagClause.Tags.Add(new Tag(_organizationPointer, _personStorage.CurrentSelectedOrganization.SystemId)); _request.FilterTags.Add(tagClause); } else { _request.FilterTags.Add(new Tag(_organizationPointer, Guid.Empty)); } }
public void AddPriceFilterTags(SearchQuery searchQuery, QueryRequest request) { if (searchQuery.ContainsPriceFilter()) { var priceListSystemIds = _priceListForUser.Value; var campaignSystemIds = _campaignsForUser.Value; var allPrices = new List <(int Min, int Max)>(searchQuery.PriceRanges); var countryId = _requestModelAccessor.RequestModel.CountryModel.SystemId; var tagClause = new OptionalTagClause(); foreach (var item in priceListSystemIds) { var name = _requestModelAccessor.RequestModel.Cart.IncludeVAT ? TagNames.GetTagNameForPriceIncludingVAT(item, countryId) : TagNames.GetTagNameForPriceExludingVAT(item, countryId); request.ReadTags.Add(name); foreach (var priceItem in allPrices) { tagClause.Tags.Add(new RangeTag(name, priceItem.Min, priceItem.Max)); } } foreach (var item in campaignSystemIds) { var name = FilteringConstants.GetCampaignTagName(item); request.ReadTags.Add(name); foreach (var priceItem in allPrices) { tagClause.Tags.Add(new RangeTag(name, priceItem.Min, priceItem.Max)); } } if (tagClause.TagsExist) { request.FilterTags.Add(tagClause); } } }
public QueryRequest GetPagesTaggedWithMetadataQueryRequest(List<Metadata> requiredMetadatas, List<Metadata> optionalMetadatas, Guid parentPageId, Guid webSiteId, SortType sortType, int pageIndex, int pageSize, Guid languageId, SecurityToken token) { var request = new QueryRequest(languageId, SearchDomains.Pages, token); // Make sure page is searchable request.FilterTags.Add(new Tag(TagNames.IsSearchable, bool.TrueString)); // Make sure pages are published request.FilterTags.Add(new Tag(TagNames.IsPublished, bool.TrueString)); if (parentPageId != Guid.Empty) { // Only search pages under specified page request.FilterTags.Add(new Tag(TagNames.PageParentTreeId, parentPageId)); } if (webSiteId != Guid.Empty) { // Only search pages under specified web site request.FilterTags.Add(new Tag(TagNames.WebSiteId, webSiteId)); } // Add required metadatas as filter foreach (Metadata metadata in requiredMetadatas) { request.FilterTags.Add(new Tag(TagNames.GetTagNameForProperty(Metadata.PropertyNameSelectedMetadata), metadata.ID)); } if (optionalMetadatas != null && optionalMetadatas.Count > 0) { // Add optional metadatas OptionalTagClause optionalMetadatasClause = new OptionalTagClause(); foreach (Metadata metadata in optionalMetadatas) { optionalMetadatasClause.FilterTags.Add(new Tag(TagNames.GetTagNameForProperty(Metadata.PropertyNameSelectedMetadata), metadata.ID)); } request.FilterTags.Add(optionalMetadatasClause); } request.Paging = GetPaging(pageIndex, pageSize); Sorting sorting = GetSortType(sortType); if (sorting != null) { request.Sortings.Add(sorting); } return request; }