A ModifierQueryNode indicates the modifier value (+,-,?,NONE) for each term on the query string. For example "+t1 -t2 t3" will have a tree of:
<BooleanQueryNode> <ModifierQueryNode modifier="MOD_REQ"> <t1/> </ModifierQueryNode> <ModifierQueryNode modifier="MOD_NOT"> <t2/> </ModifierQueryNode> <t3/> </BooleanQueryNode>
Inheritance: QueryNodeImpl
示例#1
0
        public override IQueryNode CloneTree()
        {
            ModifierQueryNode clone = (ModifierQueryNode)base.CloneTree();

            clone.modifier = this.modifier;

            return(clone);
        }
示例#2
0
 // QueryNode Query(CharSequence field) :
 // {
 // List clauses = new ArrayList();
 //   List modifiers = new ArrayList();
 //   QueryNode q, firstQuery=null;
 //   ModifierQueryNode.Modifier mods;
 //   int conj;
 // }
 // {
 //   mods=Modifiers() q=Clause(field)
 //   {
 //     if (mods == ModifierQueryNode.Modifier.MOD_NONE) firstQuery=q;
 //     
 //     // do not create modifier nodes with MOD_NONE
 //      if (mods != ModifierQueryNode.Modifier.MOD_NONE) {
 //        q = new ModifierQueryNode(q, mods);
 //      }
 //      clauses.add(q);
 //   }
 //   (
 //     conj=Conjunction() mods=Modifiers() q=Clause(field)
 //     { 
 //       // do not create modifier nodes with MOD_NONE
 //        if (mods != ModifierQueryNode.Modifier.MOD_NONE) {
 //          q = new ModifierQueryNode(q, mods);
 //        }
 //        clauses.add(q);
 //        //TODO: figure out what to do with AND and ORs
 //   }
 //   )*
 //     {
 //      if (clauses.size() == 1 && firstQuery != null)
 //         return firstQuery;
 //       else {
 //       return new BooleanQueryNode(clauses);
 //       }
 //     }
 // }
 public IQueryNode ModClause(string field)
 {
     IQueryNode q;
     Modifier mods;
     mods = Modifiers();
     q = Clause(field);
     if (mods != Modifier.MOD_NONE)
     {
         q = new ModifierQueryNode(q, mods);
     }
     { if (true) return q; }
     throw new Exception("Missing return statement in function");
 }