public static Query BuildQuery(string query, IndexQuery indexQuery, PerFieldAnalyzerWrapper analyzer) { var originalQuery = query; Analyzer keywordAnalyzer = new KeywordAnalyzer(); try { var queryParser = new RangeQueryParser(Version.LUCENE_29, indexQuery.DefaultField ?? string.Empty, analyzer) { DefaultOperator = indexQuery.DefaultOperator == QueryOperator.Or ? QueryParser.Operator.OR : QueryParser.Operator.AND, AllowLeadingWildcard = true }; query = PreProcessUntokenizedTerms(query, queryParser); query = PreProcessSearchTerms(query); query = PreProcessDateTerms(query, queryParser); var generatedQuery = queryParser.Parse(query); generatedQuery = HandleMethods(generatedQuery); return generatedQuery; } catch (ParseException pe) { if (originalQuery == query) throw new ParseException("Could not parse: '" + query + "'", pe); throw new ParseException("Could not parse modified query: '" + query + "' original was: '" + originalQuery + "'", pe); } finally { keywordAnalyzer.Close(); } }
public static Query BuildQuery(string query, IndexQuery indexQuery, RavenPerFieldAnalyzerWrapper analyzer) { var originalQuery = query; try { var queryParser = new RangeQueryParser(Version.LUCENE_29, indexQuery.DefaultField ?? string.Empty, analyzer) { DefaultOperator = indexQuery.DefaultOperator == QueryOperator.Or ? QueryParser.Operator.OR : QueryParser.Operator.AND, AllowLeadingWildcard = true }; query = PreProcessComments(query); query = PreProcessMixedInclusiveExclusiveRangeQueries(query); query = PreProcessUntokenizedTerms(query, queryParser); query = PreProcessSearchTerms(query); query = PreProcessDateTerms(query, queryParser); var generatedQuery = queryParser.Parse(query); generatedQuery = HandleMethods(generatedQuery, analyzer); return(generatedQuery); } catch (ParseException pe) { if (originalQuery == query) { throw new ParseException("Could not parse: '" + query + "'", pe); } throw new ParseException("Could not parse modified query: '" + query + "' original was: '" + originalQuery + "'", pe); } }
public static Query BuildQuery(string query, IndexQuery indexQuery, PerFieldAnalyzerWrapper analyzer) { var originalQuery = query; Analyzer keywordAnalyzer = new KeywordAnalyzer(); try { var queryParser = new RangeQueryParser(Version.LUCENE_29, indexQuery.DefaultField ?? string.Empty, analyzer) { DefaultOperator = indexQuery.DefaultOperator == QueryOperator.Or ? QueryParser.Operator.OR : QueryParser.Operator.AND, AllowLeadingWildcard = true }; query = PreProcessUntokenizedTerms(query, queryParser); query = PreProcessSearchTerms(query); query = PreProcessDateTerms(query, queryParser); return(queryParser.Parse(query)); } catch (ParseException pe) { if (originalQuery == query) { throw new ParseException("Could not parse: '" + query + "'", pe); } throw new ParseException("Could not parse modified query: '" + query + "' original was: '" + originalQuery + "'", pe); } finally { keywordAnalyzer.Close(); } }
public void MrsJones() { using (var dir = new RAMDirectory()) using (var analyzer = new LowerCaseKeywordAnalyzer()) { using (var writer = new IndexWriter(dir, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED)) { var document = new Lucene.Net.Documents.Document(); document.Add(new Field("Name", "MRS. SHABA", Field.Store.NO, Field.Index.ANALYZED_NO_NORMS)); writer.AddDocument(document); } var searcher = new IndexSearcher(dir, true); var termEnum = searcher.IndexReader.Terms(); while (termEnum.Next()) { var buffer = termEnum.Term.Text; Console.WriteLine(buffer); } var queryParser = new RangeQueryParser(Version.LUCENE_29, "", analyzer); var query = queryParser.Parse("Name:\"MRS. S*\""); Console.WriteLine(query); var result = searcher.Search(query, 10); Assert.NotEqual(0, result.TotalHits); } }
public static Query BuildQuery(string query, IndexQuery indexQuery, RavenPerFieldAnalyzerWrapper analyzer) { using (CultureHelper.EnsureInvariantCulture()) { if (UseLuceneASTParser) { try { var parser = new LuceneQueryParser(); parser.IsDefaultOperatorAnd = indexQuery.DefaultOperator == QueryOperator.And; parser.Parse(query); var res = parser.LuceneAST.ToQuery( new LuceneASTQueryConfiguration { Analayzer = analyzer, DefaultOperator = indexQuery.DefaultOperator, FieldName = indexQuery.DefaultField ?? string.Empty }); // The parser already throws parse exception if there is a syntax error. // We now return null in the case of a term query that has been fully analyzed, so we need to return a valid query. if (res == null) { return(new BooleanQuery()); } return(res); } catch (ParseException pe) { throw new ParseException("Could not parse: '" + query + "'", pe); } } var originalQuery = query; try { var queryParser = new RangeQueryParser(Version.LUCENE_29, indexQuery.DefaultField ?? string.Empty, analyzer) { DefaultOperator = indexQuery.DefaultOperator == QueryOperator.Or ? QueryParser.Operator.OR : QueryParser.Operator.AND, AllowLeadingWildcard = true }; query = PreProcessComments(query); query = PreProcessMixedInclusiveExclusiveRangeQueries(query); query = PreProcessUntokenizedTerms(query, queryParser); query = PreProcessSearchTerms(query); query = PreProcessDateTerms(query, queryParser); var generatedQuery = queryParser.Parse(query); generatedQuery = HandleMethods(generatedQuery, analyzer); return(generatedQuery); } catch (ParseException pe) { if (originalQuery == query) { throw new ParseException("Could not parse: '" + query + "'", pe); } throw new ParseException("Could not parse modified query: '" + query + "' original was: '" + originalQuery + "'", pe); } } }
public static Query BuildQuery(string query, IndexQuery indexQuery, RavenPerFieldAnalyzerWrapper analyzer) { using (CultureHelper.EnsureInvariantCulture()) { if (UseLuceneASTParser) { try { var parser = new LuceneQueryParser(); parser.Parse(query); var res = parser.LuceneAST.ToQuery( new LuceneASTQueryConfiguration { Analayzer = analyzer, DefaultOperator = indexQuery.DefaultOperator, FieldName = indexQuery.DefaultField ?? string.Empty }); // The parser should throw ParseException in this case. if (res == null) { throw new GeoAPI.IO.ParseException("Could not parse query"); } return(res); } catch (ParseException pe) { throw new ParseException("Could not parse: '" + query + "'", pe); } } var originalQuery = query; try { var queryParser = new RangeQueryParser(Version.LUCENE_29, indexQuery.DefaultField ?? string.Empty, analyzer) { DefaultOperator = indexQuery.DefaultOperator == QueryOperator.Or ? QueryParser.Operator.OR : QueryParser.Operator.AND, AllowLeadingWildcard = true }; query = PreProcessComments(query); query = PreProcessMixedInclusiveExclusiveRangeQueries(query); query = PreProcessUntokenizedTerms(query, queryParser); query = PreProcessSearchTerms(query); query = PreProcessDateTerms(query, queryParser); var generatedQuery = queryParser.Parse(query); generatedQuery = HandleMethods(generatedQuery, analyzer); return(generatedQuery); } catch (ParseException pe) { if (originalQuery == query) { throw new ParseException("Could not parse: '" + query + "'", pe); } throw new ParseException("Could not parse modified query: '" + query + "' original was: '" + originalQuery + "'", pe); } } }
public static Query BuildQuery(string query, PerFieldAnalyzerWrapper analyzer) { var keywordAnalyzer = new KeywordAnalyzer(); try { query = PreProcessUntokenizedTerms(analyzer, query, keywordAnalyzer); var queryParser = new RangeQueryParser(Version.LUCENE_29, "", analyzer); queryParser.SetAllowLeadingWildcard(true); return queryParser.Parse(query);; } finally { keywordAnalyzer.Close(); } }
public static Query BuildQuery(string query, PerFieldAnalyzerWrapper analyzer) { Analyzer keywordAnalyzer = null; try { query = PreProcessUntokenizedTerms(analyzer, query, ref keywordAnalyzer); var queryParser = new RangeQueryParser(Version.LUCENE_29, string.Empty, analyzer); queryParser.SetAllowLeadingWildcard(true); // not the recommended approach, should rather use ReverseFilter return queryParser.Parse(query); } finally { if (keywordAnalyzer != null) keywordAnalyzer.Close(); } }
public static Query BuildQuery(string query, PerFieldAnalyzerWrapper analyzer) { var keywordAnalyzer = new KeywordAnalyzer(); try { query = PreProcessUntokenizedTerms(analyzer, query, keywordAnalyzer); var queryParser = new RangeQueryParser(Version.LUCENE_29, "", analyzer); queryParser.SetAllowLeadingWildcard(true); return(queryParser.Parse(query));; } finally { keywordAnalyzer.Close(); } }
public static Query BuildQuery(string query, string defaultField, PerFieldAnalyzerWrapper analyzer) { Analyzer keywordAnalyzer = new KeywordAnalyzer(); try { var queryParser = new RangeQueryParser(Version.LUCENE_29, defaultField ?? string.Empty, analyzer); query = PreProcessUntokenizedTerms(query, queryParser); query = PreProcessSearchTerms(query); query = PreProcessDateTerms(query, queryParser); queryParser.SetAllowLeadingWildcard(true); // not the recommended approach, should rather use ReverseFilter return queryParser.Parse(query); } finally { keywordAnalyzer.Close(); } }
public static Query BuildQuery(string query, PerFieldAnalyzerWrapper analyzer) { Analyzer keywordAnalyzer = new KeywordAnalyzer(); try { var queryParser = new RangeQueryParser(Version.LUCENE_29, string.Empty, analyzer); query = PreProcessUntokenizedTerms(query, queryParser); query = PreProcessSearchTerms(query); queryParser.SetAllowLeadingWildcard(true); // not the recommended approach, should rather use ReverseFilter return(queryParser.Parse(query)); } finally { keywordAnalyzer.Close(); } }