public SearchWorkDefinition ParseSearch(ComplianceMessage target, SearchWorkDefinition definition) { QueryFilter queryFilter = null; string query = definition.Query; CultureInfo culture; FaultDefinition faultDefinition; ExceptionHandler.Parser.TryRun(delegate { if (string.IsNullOrEmpty(target.Culture)) { culture = CultureInfo.InvariantCulture; } else { culture = CultureInfo.GetCultureInfo(target.Culture); } Func <IRecipientResolver, IPolicyTagProvider, QueryFilter> func = null; switch (definition.Parser) { case SearchWorkDefinition.QueryParser.KQL: func = ((IRecipientResolver r, IPolicyTagProvider p) => KqlParser.ParseAndBuildQuery(query, KqlParser.ParseOption.EDiscoveryMode, culture, r, p)); break; case SearchWorkDefinition.QueryParser.AQS: func = delegate(IRecipientResolver r, IPolicyTagProvider p) { AqsParser.ParseOption parseOption = AqsParser.ParseOption.UseCiKeywordOnly | AqsParser.ParseOption.DisablePrefixMatch | AqsParser.ParseOption.AllowShortWildcards; return(AqsParser.ParseAndBuildQuery(query, parseOption, culture, r, p)); }; break; } if (func != null) { OrganizationId scopingOrganizationId = null; IPolicyTagProvider arg = null; IRecipientResolver arg2 = null; if (OrganizationId.TryCreateFromBytes(target.TenantId, Encoding.UTF8, out scopingOrganizationId)) { ADSessionSettings adsessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId); adsessionSettings.IncludeInactiveMailbox = true; IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(ConsistencyMode.PartiallyConsistent, adsessionSettings, 146, "ParseSearch", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\FastLocalSearchResultsProvider.cs"); arg2 = new FastLocalSearchResultsProvider.RecipientIdentityResolver(tenantOrRootOrgRecipientSession); IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, adsessionSettings, 149, "ParseSearch", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\FastLocalSearchResultsProvider.cs"); arg = new PolicyTagAdProvider(tenantOrTopologyConfigurationSession); } queryFilter = func(arg2, arg); } if (queryFilter != null) { definition.Query = FqlQueryBuilder.ToFqlString(queryFilter, culture); } }, TimeSpan.FromMinutes(1.0), out faultDefinition, target, null, default(CancellationToken), null, "ParseSearch", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\FastLocalSearchResultsProvider.cs", 102); if (faultDefinition != null) { ExceptionHandler.FaultMessage(target, faultDefinition, true); } return(definition); }
public static QueryFilter ParseAndBuildQuery(string query, KqlParser.ParseOption parseOption, CultureInfo cultureInfo, RescopedAll rescopedAll, IRecipientResolver recipientResolver, IPolicyTagProvider policyTagProvider) { KqlParser kqlParser = new KqlParser(); LocalizedKeywordMapping mapping = LocalizedKeywordMapping.GetMapping(cultureInfo); TreeNode treeNode = kqlParser.Parse(query, parseOption, cultureInfo, mapping); QueryFilterBuilder queryFilterBuilder = new QueryFilterBuilder(mapping, parseOption, rescopedAll, recipientResolver, policyTagProvider, cultureInfo); queryFilterBuilder.AllowedKeywords = KqlParser.GetSupportedProperties(parseOption); QueryFilter queryFilter = queryFilterBuilder.Build(treeNode); if (queryFilter == null) { if ((parseOption & KqlParser.ParseOption.SuppressError) == KqlParser.ParseOption.None) { throw new ParserException(new ParserErrorInfo(ParserErrorCode.ParserError)); } queryFilter = queryFilterBuilder.BuildAllFilter(query); } return(queryFilter); }
public static QueryFilter ParseAndBuildQuery(string query, KqlParser.ParseOption parseOption, CultureInfo cultureInfo, IRecipientResolver recipientResolver, IPolicyTagProvider policyTagProvider) { return(KqlParser.ParseAndBuildQuery(query, parseOption, cultureInfo, RescopedAll.Default, recipientResolver, policyTagProvider)); }
public QueryFilterBuilder(LocalizedKeywordMapping keywordMapping, KqlParser.ParseOption parseOptions, RescopedAll rescopedAll, IRecipientResolver recipientResolver, IPolicyTagProvider policyTagProvider, CultureInfo culture) { this.culture = culture; this.parseOptions = parseOptions; this.AllowedKeywords = PropertyKeywordHelper.AllPropertyKeywords; this.keywordMapping = keywordMapping; this.recipientResolver = recipientResolver; this.policyTagProvider = policyTagProvider; this.rescopedAll = rescopedAll; }
public static QueryFilter ParseAndBuildQuery(string query, AqsParser.ParseOption parseOption, CultureInfo culture, RescopedAll rescopedAll, IRecipientResolver recipientResolver, IPolicyTagProvider policyTagProvider) { AqsParser aqsParser = new AqsParser(); QueryFilter queryFilter = null; using (Condition condition = aqsParser.Parse(query, parseOption, culture)) { QueryFilterBuilder queryFilterBuilder = new QueryFilterBuilder(culture, parseOption); queryFilterBuilder.RescopedAll = rescopedAll; queryFilterBuilder.RecipientResolver = recipientResolver; queryFilterBuilder.PolicyTagProvider = policyTagProvider; queryFilterBuilder.AllowedKeywords = aqsParser.AllowedKeywords; if (condition != null) { queryFilter = queryFilterBuilder.Build(condition); } if (queryFilter == null) { if (!aqsParser.SuppressError) { throw new ParserException(new ParserErrorInfo(ParserErrorCode.ParserError)); } queryFilter = queryFilterBuilder.BuildAllFilter(1, query); } } return(queryFilter); }
// Token: 0x06001354 RID: 4948 RVA: 0x0007788C File Offset: 0x00075A8C public static QueryFilter Execute(string searchString, bool isContentIndexingEnabled, CultureInfo userCultureInfo, IPolicyTagProvider policyTagProvider, Folder folder, SearchScope searchScope, QueryFilter advancedQueryFilter) { SearchFilterGenerator searchFilterGenerator = new SearchFilterGenerator(advancedQueryFilter, userCultureInfo, policyTagProvider); return(searchFilterGenerator.Execute(searchString, isContentIndexingEnabled, folder, searchScope)); }
// Token: 0x06001352 RID: 4946 RVA: 0x000777DE File Offset: 0x000759DE private SearchFilterGenerator(QueryFilter advancedQueryFilter, CultureInfo userCultureInfo, IPolicyTagProvider policyTagProvider) { this.advancedQueryFilter = advancedQueryFilter; this.userCultureInfo = userCultureInfo; this.policyTagProvider = policyTagProvider; }