public virtual Query Build(IQueryNode queryNode) { BoostQueryNode boostNode = (BoostQueryNode)queryNode; IQueryNode child = boostNode.Child; if (child is null) { return(null); } Query query = (Query)child .GetTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); query.Boost = boostNode.Value; return(query); }
public IQueryNode Term(string field) { Token term, boost = null, fuzzySlop = null, goop1, goop2; bool fuzzy = false; bool regexp = false; bool startInc = false; bool endInc = false; IQueryNode q = null; FieldQueryNode qLower, qUpper; #pragma warning disable 612, 618 float defaultMinSimilarity = Search.FuzzyQuery.DefaultMinSimilarity; #pragma warning restore 612, 618 switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.TERM: case RegexpToken.REGEXPTERM: case RegexpToken.NUMBER: switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.TERM: term = Jj_consume_token(RegexpToken.TERM); q = new FieldQueryNode(field, EscapeQuerySyntaxImpl.DiscardEscapeChar(term.image), term.beginColumn, term.endColumn); break; case RegexpToken.REGEXPTERM: term = Jj_consume_token(RegexpToken.REGEXPTERM); regexp = true; break; case RegexpToken.NUMBER: term = Jj_consume_token(RegexpToken.NUMBER); break; default: jj_la1[15] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.FUZZY_SLOP: fuzzySlop = Jj_consume_token(RegexpToken.FUZZY_SLOP); fuzzy = true; break; default: jj_la1[16] = jj_gen; break; } switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.CARAT: Jj_consume_token(RegexpToken.CARAT); boost = Jj_consume_token(RegexpToken.NUMBER); switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.FUZZY_SLOP: fuzzySlop = Jj_consume_token(RegexpToken.FUZZY_SLOP); fuzzy = true; break; default: jj_la1[17] = jj_gen; break; } break; default: jj_la1[18] = jj_gen; break; } if (fuzzy) { float fms = defaultMinSimilarity; try { fms = Convert.ToSingle(fuzzySlop.image.Substring(1), CultureInfo.InvariantCulture); } #pragma warning disable 168 catch (Exception ignored) { } #pragma warning restore 168 if (fms < 0.0f) { { if (true) { throw new ParseException(new MessageImpl(QueryParserMessages.INVALID_SYNTAX_FUZZY_LIMITS)); } } } else if (fms >= 1.0f && fms != (int)fms) { { if (true) { throw new ParseException(new MessageImpl(QueryParserMessages.INVALID_SYNTAX_FUZZY_EDITS)); } } } q = new FuzzyQueryNode(field, EscapeQuerySyntaxImpl.DiscardEscapeChar(term.image), fms, term.beginColumn, term.endColumn); } else if (regexp) { string re = term.image.Substring(1, (term.image.Length - 1) - 1); q = new RegexpQueryNode(field, re, 0, re.Length); } break; case RegexpToken.RANGEIN_START: case RegexpToken.RANGEEX_START: switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.RANGEIN_START: Jj_consume_token(RegexpToken.RANGEIN_START); startInc = true; break; case RegexpToken.RANGEEX_START: Jj_consume_token(RegexpToken.RANGEEX_START); break; default: jj_la1[19] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.RANGE_GOOP: goop1 = Jj_consume_token(RegexpToken.RANGE_GOOP); break; case RegexpToken.RANGE_QUOTED: goop1 = Jj_consume_token(RegexpToken.RANGE_QUOTED); break; default: jj_la1[20] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.RANGE_TO: Jj_consume_token(RegexpToken.RANGE_TO); break; default: jj_la1[21] = jj_gen; break; } switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.RANGE_GOOP: goop2 = Jj_consume_token(RegexpToken.RANGE_GOOP); break; case RegexpToken.RANGE_QUOTED: goop2 = Jj_consume_token(RegexpToken.RANGE_QUOTED); break; default: jj_la1[22] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.RANGEIN_END: Jj_consume_token(RegexpToken.RANGEIN_END); endInc = true; break; case RegexpToken.RANGEEX_END: Jj_consume_token(RegexpToken.RANGEEX_END); break; default: jj_la1[23] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.CARAT: Jj_consume_token(RegexpToken.CARAT); boost = Jj_consume_token(RegexpToken.NUMBER); break; default: jj_la1[24] = jj_gen; break; } if (goop1.kind == RegexpToken.RANGE_QUOTED) { goop1.image = goop1.image.Substring(1, (goop1.image.Length - 1) - 1); } if (goop2.kind == RegexpToken.RANGE_QUOTED) { goop2.image = goop2.image.Substring(1, (goop2.image.Length - 1) - 1); } qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.DiscardEscapeChar(goop1.image), goop1.beginColumn, goop1.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.DiscardEscapeChar(goop2.image), goop2.beginColumn, goop2.endColumn); q = new TermRangeQueryNode(qLower, qUpper, startInc ? true : false, endInc ? true : false); break; case RegexpToken.QUOTED: term = Jj_consume_token(RegexpToken.QUOTED); q = new QuotedFieldQueryNode(field, EscapeQuerySyntaxImpl.DiscardEscapeChar(term.image.Substring(1, (term.image.Length - 1) - 1)), term.beginColumn + 1, term.endColumn - 1); switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.FUZZY_SLOP: fuzzySlop = Jj_consume_token(RegexpToken.FUZZY_SLOP); break; default: jj_la1[25] = jj_gen; break; } switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.CARAT: Jj_consume_token(RegexpToken.CARAT); boost = Jj_consume_token(RegexpToken.NUMBER); break; default: jj_la1[26] = jj_gen; break; } int phraseSlop = 0; if (fuzzySlop != null) { try { phraseSlop = (int)Convert.ToSingle(fuzzySlop.image.Substring(1), CultureInfo.InvariantCulture); q = new SlopQueryNode(q, phraseSlop); } #pragma warning disable 168 catch (Exception ignored) #pragma warning restore 168 { /* Should this be handled somehow? (defaults to "no PhraseSlop", if * slop number is invalid) */ } } break; default: jj_la1[27] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } if (boost != null) { float f = (float)1.0; try { f = Convert.ToSingle(boost.image, CultureInfo.InvariantCulture); // avoid boosting null queries, such as those caused by stop words if (q != null) { q = new BoostQueryNode(q, f); } } #pragma warning disable 168 catch (Exception ignored) #pragma warning restore 168 { /* Should this be handled somehow? (defaults to "no boost", if * boost number is invalid) */ } } { if (true) { return(q); } } throw new Exception("Missing return statement in function"); }
public IQueryNode Clause(string field) { IQueryNode q; Token fieldToken = null, boost = null, @operator = null, term = null; FieldQueryNode qLower, qUpper; bool lowerInclusive, upperInclusive; bool group = false; if (Jj_2_2(3)) { fieldToken = Jj_consume_token(RegexpToken.TERM); switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.OP_COLON: case RegexpToken.OP_EQUAL: switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.OP_COLON: Jj_consume_token(RegexpToken.OP_COLON); break; case RegexpToken.OP_EQUAL: Jj_consume_token(RegexpToken.OP_EQUAL); break; default: jj_la1[7] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } field = EscapeQuerySyntaxImpl.DiscardEscapeChar(fieldToken.image).ToString(); q = Term(field); break; case RegexpToken.OP_LESSTHAN: case RegexpToken.OP_LESSTHANEQ: case RegexpToken.OP_MORETHAN: case RegexpToken.OP_MORETHANEQ: switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.OP_LESSTHAN: @operator = Jj_consume_token(RegexpToken.OP_LESSTHAN); break; case RegexpToken.OP_LESSTHANEQ: @operator = Jj_consume_token(RegexpToken.OP_LESSTHANEQ); break; case RegexpToken.OP_MORETHAN: @operator = Jj_consume_token(RegexpToken.OP_MORETHAN); break; case RegexpToken.OP_MORETHANEQ: @operator = Jj_consume_token(RegexpToken.OP_MORETHANEQ); break; default: jj_la1[8] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } field = EscapeQuerySyntaxImpl.DiscardEscapeChar(fieldToken.image).ToString(); switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.TERM: term = Jj_consume_token(RegexpToken.TERM); break; case RegexpToken.QUOTED: term = Jj_consume_token(RegexpToken.QUOTED); break; case RegexpToken.NUMBER: term = Jj_consume_token(RegexpToken.NUMBER); break; default: jj_la1[9] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } if (term.kind == RegexpToken.QUOTED) { term.image = term.image.Substring(1, (term.image.Length - 1) - 1); } switch (@operator.kind) { case RegexpToken.OP_LESSTHAN: lowerInclusive = true; upperInclusive = false; qLower = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.DiscardEscapeChar(term.image), term.beginColumn, term.endColumn); break; case RegexpToken.OP_LESSTHANEQ: lowerInclusive = true; upperInclusive = true; qLower = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.DiscardEscapeChar(term.image), term.beginColumn, term.endColumn); break; case RegexpToken.OP_MORETHAN: lowerInclusive = false; upperInclusive = true; qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.DiscardEscapeChar(term.image), term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); break; case RegexpToken.OP_MORETHANEQ: lowerInclusive = true; upperInclusive = true; qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.DiscardEscapeChar(term.image), term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); break; default: { if (true) { throw new Exception("Unhandled case: operator=" + @operator.ToString()); } } } q = new TermRangeQueryNode(qLower, qUpper, lowerInclusive, upperInclusive); break; default: jj_la1[10] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } } else { switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.LPAREN: case RegexpToken.QUOTED: case RegexpToken.TERM: case RegexpToken.REGEXPTERM: case RegexpToken.RANGEIN_START: case RegexpToken.RANGEEX_START: case RegexpToken.NUMBER: if (Jj_2_1(2)) { fieldToken = Jj_consume_token(RegexpToken.TERM); switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.OP_COLON: Jj_consume_token(RegexpToken.OP_COLON); break; case RegexpToken.OP_EQUAL: Jj_consume_token(RegexpToken.OP_EQUAL); break; default: jj_la1[11] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } field = EscapeQuerySyntaxImpl.DiscardEscapeChar(fieldToken.image).ToString(); } else { ; } switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.QUOTED: case RegexpToken.TERM: case RegexpToken.REGEXPTERM: case RegexpToken.RANGEIN_START: case RegexpToken.RANGEEX_START: case RegexpToken.NUMBER: q = Term(field); break; case RegexpToken.LPAREN: Jj_consume_token(RegexpToken.LPAREN); q = Query(field); Jj_consume_token(RegexpToken.RPAREN); switch ((jj_ntk == -1) ? Jj_ntk() : jj_ntk) { case RegexpToken.CARAT: Jj_consume_token(RegexpToken.CARAT); boost = Jj_consume_token(RegexpToken.NUMBER); break; default: jj_la1[12] = jj_gen; break; } group = true; break; default: jj_la1[13] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[14] = jj_gen; Jj_consume_token(-1); throw new ParseException(); } } if (boost != null) { float f = (float)1.0; try { f = Convert.ToSingle(boost.image, CultureInfo.InvariantCulture); // avoid boosting null queries, such as those caused by stop words if (q != null) { q = new BoostQueryNode(q, f); } } #pragma warning disable 168 catch (Exception ignored) #pragma warning restore 168 { /* Should this be handled somehow? (defaults to "no boost", if * boost number is invalid) */ } } if (group) { q = new GroupQueryNode(q); } { if (true) { return(q); } } throw new Exception("Missing return statement in function"); }