Example #1
0
        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);
        }
Example #2
0
 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);
         }
     }
 }