public string Visit_WithValidRangeQuery_ReturnsValidResponse() { var rangeQuery = new LuceneRangeQuery { LuceneQuery = new Lucene.Net.Search.TermRangeQuery( "days", "2", "6", true, true), }; var luceneVisitor = new LuceneVisitor(); rangeQuery.Accept(luceneVisitor); var es = rangeQuery.ESQuery; Assert.NotNull(es); var visitor = VisitorTestsUtils.CreateAndVisitRootVisitor("days", "long"); visitor.Visit((RangeClause)es); return(((RangeClause)es).KustoQL); }
public string Visit_WithValidBoolQuery_ReturnsSuccess() { var luceneNetBoolQuery = new Lucene.Net.Search.BooleanQuery(); luceneNetBoolQuery.Clauses.Add( new Lucene.Net.Search.BooleanClause( new Lucene.Net.Search.WildcardQuery( new Lucene.Net.Index.Term("*", "Lo*d?n")), Lucene.Net.Search.Occur.MUST_NOT)); var boolQuery = new LuceneBoolQuery { LuceneQuery = luceneNetBoolQuery, }; var luceneVisitor = new LuceneVisitor(); luceneVisitor.Visit(boolQuery); var es = boolQuery.ESQuery; Assert.NotNull(es); var visitor = new ElasticSearchDSLVisitor(SchemaRetrieverMock.CreateMockSchemaRetriever()); visitor.Visit((BoolQuery)es); return(((BoolQuery)es).KustoQL); }
public string Visit_WithValidTermPhraseQuery_ReturnsValidReponse() { var query = new Lucene.Net.Search.PhraseQuery(); query.Add(new Lucene.Net.Index.Term("City", "TelAviv")); var phraseQuery = new LucenePhraseQuery { LuceneQuery = query, }; var luceneVisitor = new LuceneVisitor(); phraseQuery.Accept(luceneVisitor); var es = phraseQuery.ESQuery; Assert.NotNull(es); var visitor = new ElasticSearchDSLVisitor(SchemaRetrieverMock.CreateMockSchemaRetriever()); visitor.Visit((QueryStringClause)es); return(((QueryStringClause)es).KustoQL); }
public string Visit_WithValidRangeQuery_ReturnsValidResponse() { var rangeQuery = new LuceneRangeQuery { LuceneQuery = new Lucene.Net.Search.TermRangeQuery( "days", "2", "6", true, true), }; var luceneVisitor = new LuceneVisitor(); rangeQuery.Accept(luceneVisitor); var es = rangeQuery.ESQuery; Assert.NotNull(es); var visitor = new ElasticSearchDSLVisitor(SchemaRetrieverMock.CreateMockSchemaRetriever()); visitor.Visit((RangeClause)es); return(((RangeClause)es).KustoQL); }
public string Visit_WithValidTermPhraseQuery_ReturnsValidReponse() { var query = new Lucene.Net.Search.PhraseQuery(); query.Add(new Lucene.Net.Index.Term("City", "TelAviv")); var phraseQuery = new LucenePhraseQuery { LuceneQuery = query, }; var luceneVisitor = new LuceneVisitor(); phraseQuery.Accept(luceneVisitor); var es = phraseQuery.ESQuery; Assert.NotNull(es); var visitor = VisitorTestsUtils.CreateAndVisitRootVisitor(); visitor.Visit((QueryStringClause)es); return(((QueryStringClause)es).KustoQL); }
public void Visit_WithNullBoolQuery_ThrowsException() { var visitor = new LuceneVisitor(); Assert.That( () => visitor.Visit((LuceneBoolQuery)null), Throws.TypeOf <ArgumentNullException>()); }
public void Visit_WithInvalidBoolQuery_ThrowsException() { var boolQuery = new LuceneBoolQuery { LuceneQuery = null, }; var visitor = new LuceneVisitor(); Assert.That( () => visitor.Visit(boolQuery), Throws.TypeOf <IllegalClauseException>()); }
public string Visit_WithValidWildcardQuery_ReturnsValidReponse() { var prefixQuery = new LucenePrefixQuery { LuceneQuery = new Lucene.Net.Search.PrefixQuery( new Lucene.Net.Index.Term("*", "Kfar-Sa*")), }; var luceneVisitor = new LuceneVisitor(); luceneVisitor.Visit(prefixQuery); var es = prefixQuery.ESQuery; Assert.NotNull(es); var visitor = new ElasticSearchDSLVisitor(SchemaRetrieverMock.CreateMockSchemaRetriever()); visitor.Visit((QueryStringClause)es); return(((QueryStringClause)es).KustoQL); }
public string Visit_WithValidEscapedWildcardQuery_ReturnsValidResponse() { var wildcardQuery = new LuceneWildcardQuery { LuceneQuery = new Lucene.Net.Search.WildcardQuery( new Lucene.Net.Index.Term("*", "L\\o*d?n")), }; var luceneVisitor = new LuceneVisitor(); luceneVisitor.Visit(wildcardQuery); var es = wildcardQuery.ESQuery; Assert.NotNull(es); var visitor = new ElasticSearchDSLVisitor(SchemaRetrieverMock.CreateMockSchemaRetriever()); visitor.Visit((QueryStringClause)es); return(((QueryStringClause)es).KustoQL); }
public string Visit_WithValidWildcardTermQuery_ReturnsValidResponse() { var termQuery = new LuceneTermQuery { LuceneQuery = new Lucene.Net.Search.TermQuery( new Lucene.Net.Index.Term("*", "Kfar-Saba")), }; var luceneVisitor = new LuceneVisitor(); luceneVisitor.Visit(termQuery); var es = termQuery.ESQuery; Assert.NotNull(es); var visitor = VisitorTestsUtils.CreateAndVisitRootVisitor(); visitor.Visit((QueryStringClause)es); return(((QueryStringClause)es).KustoQL); }
/// <summary> /// Given a clause which has a Lucene based phrase, creates a KQL query. /// </summary> /// <param name="queryStringClause">The given clausse.</param> /// <returns>A KQL query string.</returns> private string CreateKqlFromLucenePhrase(QueryStringClause queryStringClause) { // we need to parse the phrase using var analyzer = new WhitespaceAnalyzer(); var queryParser = new QueryParser( Lucene.Net.Util.Version.LUCENE_30, queryStringClause.Default, analyzer) { AllowLeadingWildcard = queryStringClause.Wildcard, LowercaseExpandedTerms = false, }; // escaping special charachters from the pharse before parsing. // we would call QueryParser.Escape() method, but it escapes all charachters and // in our case we only have to worry about backslash. // implementation is based on: https://github.com/apache/lucenenet/blob/0eaf76540b8de326d1aa9ca24f4b5d6425a9ae38/src/Lucene.Net.QueryParser/Classic/QueryParserBase.cs var escapedPhrase = queryStringClause.Phrase.Replace(@"\", @"\\\", StringComparison.OrdinalIgnoreCase); // we parse and get the Lucene.Net query model var query = queryParser.Parse(escapedPhrase); // We make our own 'visitable' Lucence.Net query model var luceneQuery = VisitableLuceneQueryFactory.Make(query); // Visit var luceneVisitor = new LuceneVisitor(); luceneQuery.Accept(luceneVisitor); dynamic esQuery = luceneQuery.ESQuery; esQuery.Accept(this); return(esQuery.KustoQL); }