private Query CreateRangeQuery(IFieldMappingInfo mapping, QueryType queryType, LuceneQueryPredicateExpression lowerBoundExpression, LuceneQueryPredicateExpression upperBoundExpression) { var lowerRange = RangeType.Inclusive; var upperRange = (queryType == QueryType.LessThan || queryType == QueryType.GreaterThan) ? RangeType.Exclusive : RangeType.Inclusive; if (upperBoundExpression == null) { lowerRange = upperRange; upperRange = RangeType.Inclusive; } if (mapping.IsNumericField) { var lowerBound = lowerBoundExpression == null ? null : EvaluateExpression(lowerBoundExpression); var upperBound = upperBoundExpression == null ? null : EvaluateExpression(upperBoundExpression); return(NumericRangeUtils.CreateNumericRangeQuery(mapping.FieldName, (ValueType)lowerBound, (ValueType)upperBound, lowerRange, upperRange)); } else { var minInclusive = lowerRange == RangeType.Inclusive; var maxInclusive = upperRange == RangeType.Inclusive; var lowerBound = lowerBoundExpression == null ? null : EvaluateExpressionToStringAndAnalyze(lowerBoundExpression, mapping); var upperBound = upperBoundExpression == null ? null : EvaluateExpressionToStringAndAnalyze(upperBoundExpression, mapping); return(new TermRangeQuery(mapping.FieldName, lowerBound, upperBound, minInclusive, maxInclusive)); } }
private string GetPattern(LuceneQueryPredicateExpression expression, IFieldMappingInfo mapping) { var pattern = EvaluateExpressionToString(expression, mapping); switch (expression.QueryType) { case QueryType.Prefix: pattern += "*"; break; case QueryType.Wildcard: pattern = "*" + pattern + "*"; break; case QueryType.Suffix: pattern = "*" + pattern; break; } if (expression.Fuzzy.HasValue) { pattern += string.Format( CultureInfo.InvariantCulture, "~{0}", expression.Fuzzy.Value); } return(pattern); }
public Query Parse(IFieldMappingInfo mapping, string pattern) { var queryParser = new QueryParser(context.Version, mapping.FieldName, context.Analyzer); queryParser.AllowLeadingWildcard = true; queryParser.LowercaseExpandedTerms = !mapping.CaseSensitive; var query = queryParser.Parse(pattern); return query; }
private Query CreateRangeQuery(IFieldMappingInfo mapping, QueryType lowerQueryType, Expression lowerBoundExpression, QueryType upperQueryType, Expression upperBoundExpression) { var lowerBound = lowerBoundExpression == null ? null : EvaluateExpression(lowerBoundExpression); var upperBound = upperBoundExpression == null ? null : EvaluateExpression(upperBoundExpression); var lowerRange = (lowerQueryType == QueryType.LessThan || lowerQueryType == QueryType.GreaterThan) ? RangeType.Exclusive : RangeType.Inclusive; var upperRange = (upperQueryType == QueryType.LessThan || upperQueryType == QueryType.GreaterThan) ? RangeType.Exclusive : RangeType.Inclusive; return(mapping.CreateRangeQuery(lowerBound, upperBound, lowerRange, upperRange)); }
private FieldComparatorSource GetCustomSort(IFieldMappingInfo fieldMappingInfo) { var propertyType = fieldMappingInfo.PropertyInfo.PropertyType; if (typeof(IComparable).IsAssignableFrom(propertyType)) { return(new ConvertableFieldComparatorSource(propertyType, fieldMappingInfo.Converter)); } throw new NotSupportedException("Unsupported sort field type (does not implement IComparable): " + propertyType); }
public Query Parse(IFieldMappingInfo mapping, string pattern) { var queryParser = new QueryParser(context.Version, mapping.FieldName, context.Analyzer); queryParser.AllowLeadingWildcard = true; queryParser.LowercaseExpandedTerms = !mapping.CaseSensitive; var query = queryParser.Parse(pattern); return(query); }
private object GetFieldValue(IFieldMappingInfo fieldMapper, Document document) { var fieldConverter = fieldMapper as IDocumentFieldConverter; if (fieldConverter == null) { throw new NotSupportedException( string.Format("The field mapping of type {0} for field {1} must implement {2}.", fieldMapper.GetType(), fieldMapper.FieldName, typeof(IDocumentFieldConverter))); } return(fieldConverter.GetFieldValue(document)); }
public void SetUp() { mappingInfo = MockRepository.GenerateStub <IFieldMappingInfoProvider>(); transformer = new QueryModelTranslator(new Context(new RAMDirectory(), new WhitespaceAnalyzer(), Version.LUCENE_29, null, new object()), mappingInfo); numericMappingInfo = MockRepository.GenerateStub <IFieldMappingInfo>(); numericMappingInfo.Stub(i => i.IsNumericField).Return(true); numericMappingInfo.Stub(i => i.SortFieldType).Return(SortField.LONG); nonNumericMappingInfo = MockRepository.GenerateStub <IFieldMappingInfo>(); nonNumericMappingInfo.Stub(i => i.IsNumericField).Return(false); nonNumericMappingInfo.Stub(i => i.SortFieldType).Return(SortField.STRING); }
public void SetUp() { mappingInfo = MockRepository.GenerateStub<IFieldMappingInfoProvider>(); transformer = new QueryModelTranslator(new Context(new RAMDirectory(), new WhitespaceAnalyzer(), Version.LUCENE_29, null, new object()), mappingInfo); numericMappingInfo = MockRepository.GenerateStub<IFieldMappingInfo>(); numericMappingInfo.Stub(i => i.IsNumericField).Return(true); numericMappingInfo.Stub(i => i.SortFieldType).Return(SortField.LONG); nonNumericMappingInfo = MockRepository.GenerateStub<IFieldMappingInfo>(); nonNumericMappingInfo.Stub(i => i.IsNumericField).Return(false); nonNumericMappingInfo.Stub(i => i.SortFieldType).Return(SortField.STRING); }
private Query CreateRangeQuery(IFieldMappingInfo mapping, QueryType queryType, LuceneQueryPredicateExpression lowerBoundExpression, LuceneQueryPredicateExpression upperBoundExpression) { var lowerBound = lowerBoundExpression == null ? null : EvaluateExpression(lowerBoundExpression); var upperBound = upperBoundExpression == null ? null : EvaluateExpression(upperBoundExpression); var lowerRange = RangeType.Inclusive; var upperRange = (queryType == QueryType.LessThan || queryType == QueryType.GreaterThan) ? RangeType.Exclusive : RangeType.Inclusive; if (upperBoundExpression == null) { lowerRange = upperRange; upperRange = RangeType.Inclusive; } return(mapping.CreateRangeQuery(lowerBound, upperBound, lowerRange, upperRange)); }
private string GetPattern(LuceneQueryPredicateExpression expression, IFieldMappingInfo mapping) { var pattern = EvaluateExpressionToString(expression, mapping); switch (expression.QueryType) { case QueryType.Prefix: pattern += "*"; break; case QueryType.Wildcard: pattern = "*" + pattern + "*"; break; case QueryType.Suffix: pattern = "*" + pattern; break; } return(pattern); }
private string EvaluateExpressionToString(LuceneQueryPredicateExpression expression, IFieldMappingInfo mapping) { var result = EvaluateExpression(expression); var str = mapping == null?result.ToString() : mapping.ConvertToQueryExpression(result); if (expression.AllowSpecialCharacters) { return(str); } return(mapping != null?mapping.EscapeSpecialCharacters(str) : str); }
private string EvaluateExpressionToString(LuceneQueryPredicateExpression expression, IFieldMappingInfo mapping) { var result = EvaluateExpression(expression); var str = mapping == null ? result.ToString() : mapping.ConvertToQueryExpression(result); if (expression.AllowSpecialCharacters) return str; return mapping != null ? mapping.EscapeSpecialCharacters(str) : str; }
private string GetPattern(LuceneQueryPredicateExpression expression, IFieldMappingInfo mapping) { var pattern = EvaluateExpressionToString(expression, mapping); switch (expression.QueryType) { case QueryType.Prefix: pattern += "*"; break; case QueryType.Wildcard: pattern = "*" + pattern + "*"; break; case QueryType.Suffix: pattern = "*" + pattern; break; } return pattern; }
private Query CreateRangeQuery(IFieldMappingInfo mapping, QueryType queryType, LuceneQueryPredicateExpression lowerBoundExpression, LuceneQueryPredicateExpression upperBoundExpression) { var lowerBound = lowerBoundExpression == null ? null : EvaluateExpression(lowerBoundExpression); var upperBound = upperBoundExpression == null ? null : EvaluateExpression(upperBoundExpression); var lowerRange = RangeType.Inclusive; var upperRange = (queryType == QueryType.LessThan || queryType == QueryType.GreaterThan) ? RangeType.Exclusive : RangeType.Inclusive; if (upperBoundExpression == null) { lowerRange = upperRange; upperRange = RangeType.Inclusive; } return mapping.CreateRangeQuery(lowerBound, upperBound, lowerRange, upperRange); }
private Query CreateRangeQuery(IFieldMappingInfo mapping, QueryType lowerQueryType, Expression lowerBoundExpression, QueryType upperQueryType, Expression upperBoundExpression) { var lowerBound = lowerBoundExpression == null ? null : EvaluateExpression(lowerBoundExpression); var upperBound = upperBoundExpression == null ? null : EvaluateExpression(upperBoundExpression); var lowerRange = (lowerQueryType == QueryType.LessThan || lowerQueryType == QueryType.GreaterThan) ? RangeType.Exclusive : RangeType.Inclusive; var upperRange = (upperQueryType == QueryType.LessThan || upperQueryType == QueryType.GreaterThan) ? RangeType.Exclusive : RangeType.Inclusive; return mapping.CreateRangeQuery(lowerBound, upperBound, lowerRange, upperRange); }
private Query CreateRangeQuery(IFieldMappingInfo mapping, QueryType queryType, LuceneQueryPredicateExpression lowerBoundExpression, LuceneQueryPredicateExpression upperBoundExpression) { var lowerRange = RangeType.Inclusive; var upperRange = (queryType == QueryType.LessThan || queryType == QueryType.GreaterThan) ? RangeType.Exclusive : RangeType.Inclusive; if (upperBoundExpression == null) { lowerRange = upperRange; upperRange = RangeType.Inclusive; } if (mapping.IsNumericField) { var lowerBound = lowerBoundExpression == null ? null : EvaluateExpression(lowerBoundExpression); var upperBound = upperBoundExpression == null ? null : EvaluateExpression(upperBoundExpression); return NumericRangeUtils.CreateNumericRangeQuery(mapping.FieldName, (ValueType)lowerBound, (ValueType)upperBound, lowerRange, upperRange); } else { var minInclusive = lowerRange == RangeType.Inclusive; var maxInclusive = upperRange == RangeType.Inclusive; var lowerBound = lowerBoundExpression == null ? null : EvaluateExpressionToStringAndAnalyze(lowerBoundExpression, mapping); var upperBound = upperBoundExpression == null ? null : EvaluateExpressionToStringAndAnalyze(upperBoundExpression, mapping); return new TermRangeQuery(mapping.FieldName, lowerBound, upperBound, minInclusive, maxInclusive); } }
private string GetPattern(LuceneQueryPredicateExpression expression, IFieldMappingInfo mapping) { var pattern = EvaluateExpressionToString(expression, mapping); switch (expression.QueryType) { case QueryType.Prefix: pattern += "*"; break; case QueryType.Wildcard: pattern = "*" + pattern + "*"; break; case QueryType.Suffix: pattern = "*" + pattern; break; } if (expression.Fuzzy.HasValue) { pattern += string.Format( CultureInfo.InvariantCulture, "~{0}", expression.Fuzzy.Value); } return pattern; }
private string EvaluateExpressionToStringAndAnalyze(LuceneQueryPredicateExpression expression, IFieldMappingInfo mapping) { return(context.Analyzer.Analyze(mapping.FieldName, EvaluateExpressionToString(expression, mapping))); }
private string EvaluateExpressionToStringAndAnalyze(LuceneQueryPredicateExpression expression, IFieldMappingInfo mapping) { return context.Analyzer.Analyze(mapping.FieldName, EvaluateExpressionToString(expression, mapping)); }