public void MrsJones() { var dir = new RAMDirectory(); var analyzer = new LowerCaseKeywordAnalyzer(); 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); writer.Close(true); var searcher = new IndexSearcher(dir, true); var termEnum = searcher.GetIndexReader().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, QueryOperator defaultOperator, string defaultField, Analyzer analyzer) { using (CultureHelper.EnsureInvariantCulture()) { if (UseLuceneASTParser) { try { var parser = new LuceneQueryParser(); parser.Parse(query); var res = parser.LuceneAST.ToQuery( new LuceneASTQueryConfiguration { Analayzer = analyzer, DefaultOperator = defaultOperator, FieldName = 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, defaultField ?? string.Empty, analyzer) { DefaultOperator = 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); } } }