Example #1
0
		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();
			}
		}
Example #2
0
        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);
            }
        }
Example #3
0
        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();
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
 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);
         }
     }
 }
Example #6
0
 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);
         }
     }
 }
Example #7
0
		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();
		    }
		}
Example #8
0
		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();
			}
		}
Example #9
0
        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();
            }
        }
Example #10
0
		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();
			}
		}
Example #11
0
        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();
            }
        }