Exemplo n.º 1
0
        internal static SnQueryPredicate OptimizeBooleans(SnQueryPredicate predicate)
        {
            var v = new OptimizeBooleansVisitor();
            var optimizedPredicate = v.Visit(predicate);

            if (!(optimizedPredicate is LogicalPredicate logicalPredicate))
            {
                return(optimizedPredicate);
            }
            var clauses = logicalPredicate.Clauses;

            if (clauses.Count != 1)
            {
                return(logicalPredicate);
            }
            if (clauses[0].Occur != Occurence.MustNot)
            {
                return(logicalPredicate);
            }
            logicalPredicate.Clauses.Add(new LogicalClause(SnQuery.FullSetPredicate, Occurence.Must));
            return(logicalPredicate);
        }
Exemplo n.º 2
0
        internal static Query OptimizeBooleans(Query q)
        {
            var v  = new OptimizeBooleansVisitor();
            var q1 = v.Visit(q);
            var bq = q1 as BooleanQuery;

            if (bq == null)
            {
                return(q1);
            }
            var clauses = bq.GetClauses();

            if (clauses.Length != 1)
            {
                return(bq);
            }
            if (clauses[0].GetOccur() != BooleanClause.Occur.MUST_NOT)
            {
                return(bq);
            }
            bq.Add(LucQuery.FullSetQuery, BooleanClause.Occur.MUST);
            return(bq);
        }