public override SpanQuery GetSpanQuery(XmlElement e) { string fieldName = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName"); string value = DOMUtils.GetNonBlankTextOrFail(e); JCG.List <SpanQuery> clausesList = new JCG.List <SpanQuery>(); TokenStream ts = null; try { ts = analyzer.GetTokenStream(fieldName, value); ITermToBytesRefAttribute termAtt = ts.AddAttribute <ITermToBytesRefAttribute>(); BytesRef bytes = termAtt.BytesRef; ts.Reset(); while (ts.IncrementToken()) { termAtt.FillBytesRef(); SpanTermQuery stq = new SpanTermQuery(new Term(fieldName, BytesRef.DeepCopyOf(bytes))); clausesList.Add(stq); } ts.End(); SpanOrQuery soq = new SpanOrQuery(clausesList.ToArray(/*new SpanQuery[clausesList.size()]*/)); soq.Boost = DOMUtils.GetAttribute(e, "boost", 1.0f); return(soq); } catch (Exception ioe) when(ioe.IsIOException()) { throw new ParserException("IOException parsing value:" + value, ioe); } finally { IOUtils.DisposeWhileHandlingException(ts); } }
/// <summary> /// (non-Javadoc) /// @see org.apache.lucene.xmlparser.FilterBuilder#process(org.w3c.dom.Element) /// </summary> public virtual Filter GetFilter(XmlElement e) { List <BytesRef> terms = new List <BytesRef>(); string text = DOMUtils.GetNonBlankTextOrFail(e); string fieldName = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName"); TokenStream ts = null; try { ts = analyzer.TokenStream(fieldName, text); ITermToBytesRefAttribute termAtt = ts.AddAttribute <ITermToBytesRefAttribute>(); BytesRef bytes = termAtt.BytesRef; ts.Reset(); while (ts.IncrementToken()) { termAtt.FillBytesRef(); terms.Add(BytesRef.DeepCopyOf(bytes)); } ts.End(); } catch (IOException ioe) { throw new Exception("Error constructing terms from index:" + ioe); } finally { IOUtils.CloseWhileHandlingException(ts); } return(new TermsFilter(fieldName, terms)); }
public virtual Query GetQuery(XmlElement e) { string field = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName"); string value = DOMUtils.GetNonBlankTextOrFail(e); TermQuery tq = new TermQuery(new Term(field, value)); tq.Boost = DOMUtils.GetAttribute(e, "boost", 1.0f); return(tq); }
public override SpanQuery GetSpanQuery(XmlElement e) { string fieldName = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName"); string value = DOMUtils.GetNonBlankTextOrFail(e); SpanTermQuery stq = new SpanTermQuery(new Term(fieldName, value)); stq.Boost = DOMUtils.GetAttribute(e, "boost", 1.0f); return(stq); }
public virtual Query GetQuery(XmlElement e) { string field = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName"); string lowerTerm = DOMUtils.GetAttributeOrFail(e, "lowerTerm"); string upperTerm = DOMUtils.GetAttributeOrFail(e, "upperTerm"); bool lowerInclusive = DOMUtils.GetAttribute(e, "includeLower", true); bool upperInclusive = DOMUtils.GetAttribute(e, "includeUpper", true); int precisionStep = DOMUtils.GetAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT); string type = DOMUtils.GetAttribute(e, "type", "int"); try { Query filter; if (type.Equals("int", StringComparison.OrdinalIgnoreCase)) { filter = NumericRangeQuery.NewInt32Range(field, precisionStep, J2N.Numerics.Int32.Parse(lowerTerm, NumberFormatInfo.InvariantInfo), J2N.Numerics.Int32.Parse(upperTerm, NumberFormatInfo.InvariantInfo), lowerInclusive, upperInclusive); } else if (type.Equals("long", StringComparison.OrdinalIgnoreCase)) { filter = NumericRangeQuery.NewInt64Range(field, precisionStep, J2N.Numerics.Int64.Parse(lowerTerm, NumberFormatInfo.InvariantInfo), J2N.Numerics.Int64.Parse(upperTerm, NumberFormatInfo.InvariantInfo), lowerInclusive, upperInclusive); } else if (type.Equals("double", StringComparison.OrdinalIgnoreCase)) { filter = NumericRangeQuery.NewDoubleRange(field, precisionStep, J2N.Numerics.Double.Parse(lowerTerm, NumberFormatInfo.InvariantInfo), J2N.Numerics.Double.Parse(upperTerm, NumberFormatInfo.InvariantInfo), lowerInclusive, upperInclusive); } else if (type.Equals("float", StringComparison.OrdinalIgnoreCase)) { filter = NumericRangeQuery.NewSingleRange(field, precisionStep, J2N.Numerics.Single.Parse(lowerTerm, NumberFormatInfo.InvariantInfo), J2N.Numerics.Single.Parse(upperTerm, NumberFormatInfo.InvariantInfo), lowerInclusive, upperInclusive); } else { throw new ParserException("type attribute must be one of: [long, int, double, float]"); } return(filter); } catch (Exception nfe) when(nfe.IsNumberFormatException()) { throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe); } }
public override SpanQuery GetSpanQuery(XmlElement e) { string fieldName = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName"); string value = DOMUtils.GetNonBlankTextOrFail(e); PayloadTermQuery btq = new PayloadTermQuery(new Term(fieldName, value), new AveragePayloadFunction()); btq.Boost = DOMUtils.GetAttribute(e, "boost", 1.0f); return(btq); }
public virtual Filter GetFilter(XmlElement e) { string field = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName"); string lowerTerm = DOMUtils.GetAttributeOrFail(e, "lowerTerm"); string upperTerm = DOMUtils.GetAttributeOrFail(e, "upperTerm"); bool lowerInclusive = DOMUtils.GetAttribute(e, "includeLower", true); bool upperInclusive = DOMUtils.GetAttribute(e, "includeUpper", true); int precisionStep = DOMUtils.GetAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT); string type = DOMUtils.GetAttribute(e, "type", "int"); try { Filter filter; if (type.Equals("int", StringComparison.OrdinalIgnoreCase)) { filter = NumericRangeFilter.NewInt32Range(field, precisionStep, Convert .ToInt32(lowerTerm, CultureInfo.InvariantCulture), Convert.ToInt32(upperTerm, CultureInfo.InvariantCulture), lowerInclusive, upperInclusive); } else if (type.Equals("long", StringComparison.OrdinalIgnoreCase)) { filter = NumericRangeFilter.NewInt64Range(field, precisionStep, Convert .ToInt64(lowerTerm, CultureInfo.InvariantCulture), Convert.ToInt64(upperTerm, CultureInfo.InvariantCulture), lowerInclusive, upperInclusive); } else if (type.Equals("double", StringComparison.OrdinalIgnoreCase)) { filter = NumericRangeFilter.NewDoubleRange(field, precisionStep, Convert .ToDouble(lowerTerm, CultureInfo.InvariantCulture), Convert.ToDouble(upperTerm, CultureInfo.InvariantCulture), lowerInclusive, upperInclusive); } else if (type.Equals("float", StringComparison.OrdinalIgnoreCase)) { filter = NumericRangeFilter.NewSingleRange(field, precisionStep, Convert .ToSingle(lowerTerm, CultureInfo.InvariantCulture), Convert.ToSingle(upperTerm, CultureInfo.InvariantCulture), lowerInclusive, upperInclusive); } else { throw new ParserException("type attribute must be one of: [long, int, double, float]"); } return(filter); } catch (FormatException nfe) { if (strictMode) { throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe); } return(NO_MATCH_FILTER); } }
public virtual Query GetQuery(XmlElement e) { string fieldName = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName"); string text = DOMUtils.GetNonBlankTextOrFail(e); BooleanQuery bq = new BooleanQuery(DOMUtils.GetAttribute(e, "disableCoord", false)); bq.MinimumNumberShouldMatch = DOMUtils.GetAttribute(e, "minimumNumberShouldMatch", 0); TokenStream ts = null; try { ts = analyzer.GetTokenStream(fieldName, text); ITermToBytesRefAttribute termAtt = ts.AddAttribute <ITermToBytesRefAttribute>(); Term term = null; BytesRef bytes = termAtt.BytesRef; ts.Reset(); while (ts.IncrementToken()) { termAtt.FillBytesRef(); term = new Term(fieldName, BytesRef.DeepCopyOf(bytes)); bq.Add(new BooleanClause(new TermQuery(term), Occur.SHOULD)); } ts.End(); } catch (Exception ioe) when(ioe.IsIOException()) { throw RuntimeException.Create("Error constructing terms from index:" + ioe, ioe); } finally { IOUtils.DisposeWhileHandlingException(ts); } bq.Boost = DOMUtils.GetAttribute(e, "boost", 1.0f); return(bq); }
public virtual Filter GetFilter(XmlElement e) { string fieldName = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName"); DuplicateFilter df = new DuplicateFilter(fieldName); string keepMode = DOMUtils.GetAttribute(e, "keepMode", "first"); if (keepMode.Equals("first", StringComparison.OrdinalIgnoreCase)) { df.KeepMode = KeepMode.KM_USE_FIRST_OCCURRENCE; } else if (keepMode.Equals("last", StringComparison.OrdinalIgnoreCase)) { df.KeepMode = KeepMode.KM_USE_LAST_OCCURRENCE; } else { throw new ParserException("Illegal keepMode attribute in DuplicateFilter:" + keepMode); } string processingMode = DOMUtils.GetAttribute(e, "processingMode", "full"); if (processingMode.Equals("full", StringComparison.OrdinalIgnoreCase)) { df.ProcessingMode = ProcessingMode.PM_FULL_VALIDATION; } else if (processingMode.Equals("fast", StringComparison.OrdinalIgnoreCase)) { df.ProcessingMode = ProcessingMode.PM_FAST_INVALIDATION; } else { throw new ParserException("Illegal processingMode attribute in DuplicateFilter:" + processingMode); } return(df); }