Search in sources :

Example 36 with Result

use of org.opensearch.percolator.QueryAnalyzer.Result in project OpenSearch by opensearch-project.

the class QueryAnalyzerTests method testExtractQueryMetadata_spanTermQuery.

public void testExtractQueryMetadata_spanTermQuery() {
    // the following span queries aren't exposed in the query dsl and are therefor not supported:
    // 1) SpanPositionRangeQuery
    // 2) PayloadScoreQuery
    // 3) SpanBoostQuery
    // The following span queries can't be supported because of how these queries work:
    // 1) SpanMultiTermQueryWrapper, not supported, because there is no support for MTQ typed queries yet.
    // 2) SpanContainingQuery, is kind of range of spans and we don't know what is between the little and big terms
    // 3) SpanWithinQuery, same reason as SpanContainingQuery
    // 4) FieldMaskingSpanQuery is a tricky query so we shouldn't optimize this
    SpanTermQuery spanTermQuery1 = new SpanTermQuery(new Term("_field", "_short_term"));
    Result result = analyze(spanTermQuery1, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertTermsEqual(result.extractions, spanTermQuery1.getTerm());
}
Also used : SpanTermQuery(org.apache.lucene.search.spans.SpanTermQuery) Term(org.apache.lucene.index.Term) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 37 with Result

use of org.opensearch.percolator.QueryAnalyzer.Result in project OpenSearch by opensearch-project.

the class QueryAnalyzerTests method testExtractQueryMetadata_constantScoreQuery.

public void testExtractQueryMetadata_constantScoreQuery() {
    TermQuery termQuery1 = new TermQuery(new Term("_field", "_term"));
    ConstantScoreQuery constantScoreQuery = new ConstantScoreQuery(termQuery1);
    Result result = analyze(constantScoreQuery, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.minimumShouldMatch, equalTo(1));
    List<QueryExtraction> terms = new ArrayList<>(result.extractions);
    assertThat(terms.size(), equalTo(1));
    assertThat(terms.get(0).field(), equalTo(termQuery1.getTerm().field()));
    assertThat(terms.get(0).bytes(), equalTo(termQuery1.getTerm().bytes()));
}
Also used : BlendedTermQuery(org.apache.lucene.queries.BlendedTermQuery) SpanTermQuery(org.apache.lucene.search.spans.SpanTermQuery) TermQuery(org.apache.lucene.search.TermQuery) QueryExtraction(org.opensearch.percolator.QueryAnalyzer.QueryExtraction) ArrayList(java.util.ArrayList) ConstantScoreQuery(org.apache.lucene.search.ConstantScoreQuery) Term(org.apache.lucene.index.Term) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 38 with Result

use of org.opensearch.percolator.QueryAnalyzer.Result in project OpenSearch by opensearch-project.

the class QueryAnalyzerTests method testPointRangeQuerySelectRanges.

public void testPointRangeQuerySelectRanges() {
    BooleanQuery.Builder boolQuery = new BooleanQuery.Builder();
    boolQuery.add(LongPoint.newRangeQuery("_field1", 10, 20), BooleanClause.Occur.SHOULD);
    boolQuery.add(LongPoint.newRangeQuery("_field2", 10, 15), BooleanClause.Occur.SHOULD);
    Result result = analyze(boolQuery.build(), Version.CURRENT);
    assertFalse(result.verified);
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertEquals(2, result.extractions.size());
    assertEquals("_field2", new ArrayList<>(result.extractions).get(0).range.fieldName);
    assertEquals("_field1", new ArrayList<>(result.extractions).get(1).range.fieldName);
    boolQuery = new BooleanQuery.Builder();
    boolQuery.add(LongPoint.newRangeQuery("_field1", 10, 20), BooleanClause.Occur.FILTER);
    boolQuery.add(LongPoint.newRangeQuery("_field2", 10, 15), BooleanClause.Occur.FILTER);
    result = analyze(boolQuery.build(), Version.CURRENT);
    assertFalse(result.verified);
    assertThat(result.minimumShouldMatch, equalTo(2));
    assertEquals(2, result.extractions.size());
    assertEquals("_field2", new ArrayList<>(result.extractions).get(0).range.fieldName);
    assertEquals("_field1", new ArrayList<>(result.extractions).get(1).range.fieldName);
    boolQuery = new BooleanQuery.Builder();
    boolQuery.add(LongPoint.newRangeQuery("_field1", 10, 20), BooleanClause.Occur.FILTER);
    boolQuery.add(LongPoint.newRangeQuery("_field1", 10, 15), BooleanClause.Occur.FILTER);
    result = analyze(boolQuery.build(), Version.CURRENT);
    assertFalse(result.verified);
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertEquals(2, result.extractions.size());
    assertEquals("_field1", new ArrayList<>(result.extractions).get(0).range.fieldName);
    assertEquals("_field1", new ArrayList<>(result.extractions).get(1).range.fieldName);
    boolQuery = new BooleanQuery.Builder().setMinimumNumberShouldMatch(2);
    boolQuery.add(LongPoint.newRangeQuery("_field1", 10, 20), BooleanClause.Occur.SHOULD);
    boolQuery.add(LongPoint.newRangeQuery("_field2", 10, 15), BooleanClause.Occur.SHOULD);
    result = analyze(boolQuery.build(), Version.CURRENT);
    assertFalse(result.verified);
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertEquals(2, result.extractions.size());
    assertEquals("_field2", new ArrayList<>(result.extractions).get(0).range.fieldName);
    assertEquals("_field1", new ArrayList<>(result.extractions).get(1).range.fieldName);
    boolQuery = new BooleanQuery.Builder().setMinimumNumberShouldMatch(2);
    boolQuery.add(LongPoint.newRangeQuery("_field1", 10, 20), BooleanClause.Occur.SHOULD);
    boolQuery.add(LongPoint.newRangeQuery("_field1", 10, 15), BooleanClause.Occur.SHOULD);
    result = analyze(boolQuery.build(), Version.CURRENT);
    assertFalse(result.verified);
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertEquals(2, result.extractions.size());
    assertEquals("_field1", new ArrayList<>(result.extractions).get(0).range.fieldName);
    assertEquals("_field1", new ArrayList<>(result.extractions).get(1).range.fieldName);
}
Also used : BooleanQuery(org.apache.lucene.search.BooleanQuery) ArrayList(java.util.ArrayList) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 39 with Result

use of org.opensearch.percolator.QueryAnalyzer.Result in project OpenSearch by opensearch-project.

the class QueryAnalyzerTests method testSynonymQuery.

public void testSynonymQuery() {
    SynonymQuery query = new SynonymQuery();
    Result result = analyze(query, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.extractions.isEmpty(), is(true));
    query = new SynonymQuery(new Term("_field", "_value1"), new Term("_field", "_value2"));
    result = analyze(query, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertTermsEqual(result.extractions, new Term("_field", "_value1"), new Term("_field", "_value2"));
}
Also used : SynonymQuery(org.apache.lucene.search.SynonymQuery) Term(org.apache.lucene.index.Term) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Aggregations

Result (org.opensearch.percolator.QueryAnalyzer.Result)39 QueryAnalyzer.selectBestResult (org.opensearch.percolator.QueryAnalyzer.selectBestResult)39 Term (org.apache.lucene.index.Term)32 SpanTermQuery (org.apache.lucene.search.spans.SpanTermQuery)31 BlendedTermQuery (org.apache.lucene.queries.BlendedTermQuery)26 TermQuery (org.apache.lucene.search.TermQuery)26 BooleanQuery (org.apache.lucene.search.BooleanQuery)23 MatchAllDocsQuery (org.apache.lucene.search.MatchAllDocsQuery)17 MultiPhraseQuery (org.apache.lucene.search.MultiPhraseQuery)17 QueryExtraction (org.opensearch.percolator.QueryAnalyzer.QueryExtraction)17 DisjunctionMaxQuery (org.apache.lucene.search.DisjunctionMaxQuery)16 PhraseQuery (org.apache.lucene.search.PhraseQuery)16 FunctionScoreQuery (org.opensearch.common.lucene.search.function.FunctionScoreQuery)16 ArrayList (java.util.ArrayList)15 IntervalQuery (org.apache.lucene.queries.intervals.IntervalQuery)15 BoostQuery (org.apache.lucene.search.BoostQuery)15 ConstantScoreQuery (org.apache.lucene.search.ConstantScoreQuery)15 MatchNoDocsQuery (org.apache.lucene.search.MatchNoDocsQuery)15 SynonymQuery (org.apache.lucene.search.SynonymQuery)15 TermRangeQuery (org.apache.lucene.search.TermRangeQuery)15