private static Query CombinePathQuery(Query q, string contextPath, PathUsageMode pathUsageMode) { if (q == null) { return(null); } var pathQuery = GetPathQuery(contextPath, pathUsageMode == PathUsageMode.InTreeAnd || pathUsageMode == PathUsageMode.InTreeOr); if (pathQuery == null) { return(q); } var occur = pathUsageMode == PathUsageMode.InFolderOr || pathUsageMode == PathUsageMode.InTreeOr ? BooleanClause.Occur.SHOULD : BooleanClause.Occur.MUST; var bq = new BooleanQuery(); bq.Add(new BooleanClause(q, occur)); bq.Add(new BooleanClause(pathQuery, occur)); return(bq); }
private static SnQueryPredicate CombinePathPredicate(SnQueryPredicate predicate, string contextPath, PathUsageMode pathUsageMode) { if (predicate == null) { return(null); } var pathQuery = GetPathPredicate(contextPath, pathUsageMode == PathUsageMode.InTreeAnd || pathUsageMode == PathUsageMode.InTreeOr); if (pathQuery == null) { return(predicate); } var occur = pathUsageMode == PathUsageMode.InFolderOr || pathUsageMode == PathUsageMode.InTreeOr ? Occurence.Should : Occurence.Must; return(new LogicalPredicate(new[] { new LogicalClause(predicate, occur), new LogicalClause(pathQuery, occur) })); }