Search in sources :

Example 16 with Result

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

the class QueryAnalyzerTests method testExtractQueryMetadata_matchAllDocsQuery.

public void testExtractQueryMetadata_matchAllDocsQuery() {
    Result result = analyze(new MatchAllDocsQuery(), Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.matchAllDocs, is(true));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.extractions.size(), equalTo(0));
    BooleanQuery.Builder builder = new BooleanQuery.Builder();
    builder.add(new TermQuery(new Term("field", "value")), BooleanClause.Occur.MUST);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    result = analyze(builder.build(), Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.matchAllDocs, is(false));
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertTermsEqual(result.extractions, new Term("field", "value"));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    BooleanQuery bq1 = builder.build();
    result = analyze(bq1, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.matchAllDocs, is(true));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.extractions.size(), equalTo(0));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST_NOT);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    BooleanQuery bq2 = builder.build();
    result = analyze(bq2, Version.CURRENT);
    assertThat(result.verified, is(false));
    assertThat(result.matchAllDocs, is(true));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.extractions.size(), equalTo(0));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    BooleanQuery bq3 = builder.build();
    result = analyze(bq3, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.matchAllDocs, is(true));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.extractions.size(), equalTo(0));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST_NOT);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    BooleanQuery bq4 = builder.build();
    result = analyze(bq4, Version.CURRENT);
    assertThat(result.verified, is(false));
    assertThat(result.matchAllDocs, is(true));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.extractions.size(), equalTo(0));
    builder = new BooleanQuery.Builder();
    builder.add(new TermQuery(new Term("field", "value")), BooleanClause.Occur.SHOULD);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    BooleanQuery bq5 = builder.build();
    result = analyze(bq5, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.matchAllDocs, is(true));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.extractions.size(), equalTo(0));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    builder.add(new TermQuery(new Term("field", "value")), BooleanClause.Occur.SHOULD);
    builder.setMinimumNumberShouldMatch(2);
    BooleanQuery bq6 = builder.build();
    result = analyze(bq6, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.matchAllDocs, is(false));
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertThat(result.extractions.size(), equalTo(1));
    assertTermsEqual(result.extractions, new Term("field", "value"));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    builder.add(new TermQuery(new Term("field", "value")), BooleanClause.Occur.SHOULD);
    builder.setMinimumNumberShouldMatch(2);
    BooleanQuery bq7 = builder.build();
    result = analyze(bq7, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.matchAllDocs, is(true));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.extractions.size(), equalTo(0));
}
Also used : BooleanQuery(org.apache.lucene.search.BooleanQuery) BlendedTermQuery(org.apache.lucene.queries.BlendedTermQuery) SpanTermQuery(org.apache.lucene.search.spans.SpanTermQuery) TermQuery(org.apache.lucene.search.TermQuery) Term(org.apache.lucene.index.Term) MatchAllDocsQuery(org.apache.lucene.search.MatchAllDocsQuery) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 17 with Result

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

the class QueryAnalyzerTests method testExtractQueryMetadata_multiPhraseQuery.

public void testExtractQueryMetadata_multiPhraseQuery() {
    MultiPhraseQuery multiPhraseQuery = new MultiPhraseQuery.Builder().add(new Term("_field", "_term1")).add(new Term[] { new Term("_field", "_term2"), new Term("_field", "_term3") }).add(new Term[] { new Term("_field", "_term4"), new Term("_field", "_term5") }).add(new Term[] { new Term("_field", "_term6") }).build();
    Result result = analyze(multiPhraseQuery, Version.CURRENT);
    assertThat(result.verified, is(false));
    assertThat(result.minimumShouldMatch, equalTo(4));
    List<QueryExtraction> terms = new ArrayList<>(result.extractions);
    terms.sort(Comparator.comparing(qt -> qt.term));
    assertThat(terms.size(), equalTo(6));
    assertThat(terms.get(0).field(), equalTo("_field"));
    assertThat(terms.get(0).bytes().utf8ToString(), equalTo("_term1"));
    assertThat(terms.get(1).field(), equalTo("_field"));
    assertThat(terms.get(1).bytes().utf8ToString(), equalTo("_term2"));
    assertThat(terms.get(2).field(), equalTo("_field"));
    assertThat(terms.get(2).bytes().utf8ToString(), equalTo("_term3"));
    assertThat(terms.get(3).field(), equalTo("_field"));
    assertThat(terms.get(3).bytes().utf8ToString(), equalTo("_term4"));
    assertThat(terms.get(4).field(), equalTo("_field"));
    assertThat(terms.get(4).bytes().utf8ToString(), equalTo("_term5"));
    assertThat(terms.get(5).field(), equalTo("_field"));
    assertThat(terms.get(5).bytes().utf8ToString(), equalTo("_term6"));
}
Also used : Query(org.apache.lucene.search.Query) Arrays(java.util.Arrays) MatchNoDocsQuery(org.apache.lucene.search.MatchNoDocsQuery) SortedNumericDocValuesField(org.apache.lucene.document.SortedNumericDocValuesField) Term(org.apache.lucene.index.Term) CommonTermsQuery(org.apache.lucene.queries.CommonTermsQuery) PhraseQuery(org.apache.lucene.search.PhraseQuery) Version(org.opensearch.Version) IndexOrDocValuesQuery(org.apache.lucene.search.IndexOrDocValuesQuery) BlendedTermQuery(org.apache.lucene.queries.BlendedTermQuery) DoublePoint(org.apache.lucene.document.DoublePoint) QueryAnalyzer.analyze(org.opensearch.percolator.QueryAnalyzer.analyze) IntervalsSource(org.apache.lucene.queries.intervals.IntervalsSource) LatLonPoint(org.apache.lucene.document.LatLonPoint) Occur(org.apache.lucene.search.BooleanClause.Occur) FunctionScoreQuery(org.opensearch.common.lucene.search.function.FunctionScoreQuery) InetAddressPoint(org.apache.lucene.document.InetAddressPoint) TermInSetQuery(org.apache.lucene.search.TermInSetQuery) SpanFirstQuery(org.apache.lucene.search.spans.SpanFirstQuery) BytesRef(org.apache.lucene.util.BytesRef) Result(org.opensearch.percolator.QueryAnalyzer.Result) OpenSearchTestCase(org.opensearch.test.OpenSearchTestCase) Set(java.util.Set) MatchAllDocsQuery(org.apache.lucene.search.MatchAllDocsQuery) ScoreMode(org.apache.lucene.search.join.ScoreMode) Collectors(java.util.stream.Collectors) IsCollectionWithSize.hasSize(org.hamcrest.collection.IsCollectionWithSize.hasSize) DisjunctionMaxQuery(org.apache.lucene.search.DisjunctionMaxQuery) List(java.util.List) IntervalQuery(org.apache.lucene.queries.intervals.IntervalQuery) Matchers.equalTo(org.hamcrest.Matchers.equalTo) Matchers.is(org.hamcrest.Matchers.is) RandomScoreFunction(org.opensearch.common.lucene.search.function.RandomScoreFunction) SpanTermQuery(org.apache.lucene.search.spans.SpanTermQuery) QueryExtraction(org.opensearch.percolator.QueryAnalyzer.QueryExtraction) LongPoint(org.apache.lucene.document.LongPoint) InetAddresses(org.opensearch.common.network.InetAddresses) SpanNotQuery(org.apache.lucene.search.spans.SpanNotQuery) QueryBitSetProducer(org.apache.lucene.search.join.QueryBitSetProducer) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) ConstantScoreQuery(org.apache.lucene.search.ConstantScoreQuery) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) CombineFunction(org.opensearch.common.lucene.search.function.CombineFunction) IntPoint(org.apache.lucene.document.IntPoint) SpanNearQuery(org.apache.lucene.search.spans.SpanNearQuery) FloatPoint(org.apache.lucene.document.FloatPoint) HalfFloatPoint(org.apache.lucene.document.HalfFloatPoint) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult) BooleanClause(org.apache.lucene.search.BooleanClause) Consumer(java.util.function.Consumer) TermQuery(org.apache.lucene.search.TermQuery) SynonymQuery(org.apache.lucene.search.SynonymQuery) BooleanQuery(org.apache.lucene.search.BooleanQuery) Matchers.sameInstance(org.hamcrest.Matchers.sameInstance) BoostQuery(org.apache.lucene.search.BoostQuery) TermRangeQuery(org.apache.lucene.search.TermRangeQuery) SpanOrQuery(org.apache.lucene.search.spans.SpanOrQuery) Intervals(org.apache.lucene.queries.intervals.Intervals) OpenSearchToParentBlockJoinQuery(org.opensearch.index.search.OpenSearchToParentBlockJoinQuery) Comparator(java.util.Comparator) Collections(java.util.Collections) QueryExtraction(org.opensearch.percolator.QueryAnalyzer.QueryExtraction) ArrayList(java.util.ArrayList) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) Term(org.apache.lucene.index.Term) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 18 with Result

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

the class QueryAnalyzerTests method testExtractQueryMetadata_matchNoDocsQuery.

public void testExtractQueryMetadata_matchNoDocsQuery() {
    Result result = analyze(new MatchNoDocsQuery("sometimes there is no reason at all"), Version.CURRENT);
    assertThat(result.verified, is(true));
    assertEquals(0, result.extractions.size());
    assertThat(result.minimumShouldMatch, equalTo(0));
    BooleanQuery.Builder bq = new BooleanQuery.Builder();
    bq.add(new TermQuery(new Term("field", "value")), BooleanClause.Occur.MUST);
    bq.add(new MatchNoDocsQuery("sometimes there is no reason at all"), BooleanClause.Occur.MUST);
    result = analyze(bq.build(), Version.CURRENT);
    assertThat(result.verified, is(true));
    assertEquals(0, result.extractions.size());
    assertThat(result.minimumShouldMatch, equalTo(0));
    bq = new BooleanQuery.Builder();
    bq.add(new TermQuery(new Term("field", "value")), BooleanClause.Occur.SHOULD);
    bq.add(new MatchNoDocsQuery("sometimes there is no reason at all"), BooleanClause.Occur.SHOULD);
    result = analyze(bq.build(), Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertTermsEqual(result.extractions, new Term("field", "value"));
    DisjunctionMaxQuery disjunctionMaxQuery = new DisjunctionMaxQuery(Arrays.asList(new TermQuery(new Term("field", "value")), new MatchNoDocsQuery("sometimes there is no reason at all")), 1f);
    result = analyze(disjunctionMaxQuery, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertTermsEqual(result.extractions, new Term("field", "value"));
}
Also used : BooleanQuery(org.apache.lucene.search.BooleanQuery) BlendedTermQuery(org.apache.lucene.queries.BlendedTermQuery) SpanTermQuery(org.apache.lucene.search.spans.SpanTermQuery) TermQuery(org.apache.lucene.search.TermQuery) MatchNoDocsQuery(org.apache.lucene.search.MatchNoDocsQuery) DisjunctionMaxQuery(org.apache.lucene.search.DisjunctionMaxQuery) Term(org.apache.lucene.index.Term) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 19 with Result

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

the class QueryAnalyzerTests method testFunctionScoreQuery_withMatchAll.

public void testFunctionScoreQuery_withMatchAll() {
    MatchAllDocsQuery innerQuery = new MatchAllDocsQuery();
    FunctionScoreQuery functionScoreQuery1 = new FunctionScoreQuery(innerQuery, new RandomScoreFunction(0, 0, null));
    Result result = analyze(functionScoreQuery1, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.matchAllDocs, is(true));
    assertThat(result.extractions.isEmpty(), is(true));
    FunctionScoreQuery functionScoreQuery2 = new FunctionScoreQuery(innerQuery, new RandomScoreFunction(0, 0, null), CombineFunction.MULTIPLY, 1f, 10f);
    result = analyze(functionScoreQuery2, Version.CURRENT);
    assertThat(result.verified, is(false));
    assertThat(result.minimumShouldMatch, equalTo(0));
    assertThat(result.matchAllDocs, is(true));
    assertThat(result.extractions.isEmpty(), is(true));
}
Also used : FunctionScoreQuery(org.opensearch.common.lucene.search.function.FunctionScoreQuery) MatchAllDocsQuery(org.apache.lucene.search.MatchAllDocsQuery) RandomScoreFunction(org.opensearch.common.lucene.search.function.RandomScoreFunction) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 20 with Result

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

the class QueryAnalyzerTests method testExtractQueryMetadata_phraseQuery.

public void testExtractQueryMetadata_phraseQuery() {
    PhraseQuery phraseQuery = new PhraseQuery("_field", "_term1", "term2");
    Result result = analyze(phraseQuery, Version.CURRENT);
    assertThat(result.verified, is(false));
    assertThat(result.minimumShouldMatch, equalTo(2));
    List<QueryExtraction> terms = new ArrayList<>(result.extractions);
    terms.sort(Comparator.comparing(qt -> qt.term));
    assertThat(terms.size(), equalTo(2));
    assertThat(terms.get(0).field(), equalTo(phraseQuery.getTerms()[0].field()));
    assertThat(terms.get(0).bytes(), equalTo(phraseQuery.getTerms()[0].bytes()));
    assertThat(terms.get(1).field(), equalTo(phraseQuery.getTerms()[1].field()));
    assertThat(terms.get(1).bytes(), equalTo(phraseQuery.getTerms()[1].bytes()));
}
Also used : Query(org.apache.lucene.search.Query) Arrays(java.util.Arrays) MatchNoDocsQuery(org.apache.lucene.search.MatchNoDocsQuery) SortedNumericDocValuesField(org.apache.lucene.document.SortedNumericDocValuesField) Term(org.apache.lucene.index.Term) CommonTermsQuery(org.apache.lucene.queries.CommonTermsQuery) PhraseQuery(org.apache.lucene.search.PhraseQuery) Version(org.opensearch.Version) IndexOrDocValuesQuery(org.apache.lucene.search.IndexOrDocValuesQuery) BlendedTermQuery(org.apache.lucene.queries.BlendedTermQuery) DoublePoint(org.apache.lucene.document.DoublePoint) QueryAnalyzer.analyze(org.opensearch.percolator.QueryAnalyzer.analyze) IntervalsSource(org.apache.lucene.queries.intervals.IntervalsSource) LatLonPoint(org.apache.lucene.document.LatLonPoint) Occur(org.apache.lucene.search.BooleanClause.Occur) FunctionScoreQuery(org.opensearch.common.lucene.search.function.FunctionScoreQuery) InetAddressPoint(org.apache.lucene.document.InetAddressPoint) TermInSetQuery(org.apache.lucene.search.TermInSetQuery) SpanFirstQuery(org.apache.lucene.search.spans.SpanFirstQuery) BytesRef(org.apache.lucene.util.BytesRef) Result(org.opensearch.percolator.QueryAnalyzer.Result) OpenSearchTestCase(org.opensearch.test.OpenSearchTestCase) Set(java.util.Set) MatchAllDocsQuery(org.apache.lucene.search.MatchAllDocsQuery) ScoreMode(org.apache.lucene.search.join.ScoreMode) Collectors(java.util.stream.Collectors) IsCollectionWithSize.hasSize(org.hamcrest.collection.IsCollectionWithSize.hasSize) DisjunctionMaxQuery(org.apache.lucene.search.DisjunctionMaxQuery) List(java.util.List) IntervalQuery(org.apache.lucene.queries.intervals.IntervalQuery) Matchers.equalTo(org.hamcrest.Matchers.equalTo) Matchers.is(org.hamcrest.Matchers.is) RandomScoreFunction(org.opensearch.common.lucene.search.function.RandomScoreFunction) SpanTermQuery(org.apache.lucene.search.spans.SpanTermQuery) QueryExtraction(org.opensearch.percolator.QueryAnalyzer.QueryExtraction) LongPoint(org.apache.lucene.document.LongPoint) InetAddresses(org.opensearch.common.network.InetAddresses) SpanNotQuery(org.apache.lucene.search.spans.SpanNotQuery) QueryBitSetProducer(org.apache.lucene.search.join.QueryBitSetProducer) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) ConstantScoreQuery(org.apache.lucene.search.ConstantScoreQuery) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) CombineFunction(org.opensearch.common.lucene.search.function.CombineFunction) IntPoint(org.apache.lucene.document.IntPoint) SpanNearQuery(org.apache.lucene.search.spans.SpanNearQuery) FloatPoint(org.apache.lucene.document.FloatPoint) HalfFloatPoint(org.apache.lucene.document.HalfFloatPoint) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult) BooleanClause(org.apache.lucene.search.BooleanClause) Consumer(java.util.function.Consumer) TermQuery(org.apache.lucene.search.TermQuery) SynonymQuery(org.apache.lucene.search.SynonymQuery) BooleanQuery(org.apache.lucene.search.BooleanQuery) Matchers.sameInstance(org.hamcrest.Matchers.sameInstance) BoostQuery(org.apache.lucene.search.BoostQuery) TermRangeQuery(org.apache.lucene.search.TermRangeQuery) SpanOrQuery(org.apache.lucene.search.spans.SpanOrQuery) Intervals(org.apache.lucene.queries.intervals.Intervals) OpenSearchToParentBlockJoinQuery(org.opensearch.index.search.OpenSearchToParentBlockJoinQuery) Comparator(java.util.Comparator) Collections(java.util.Collections) QueryExtraction(org.opensearch.percolator.QueryAnalyzer.QueryExtraction) PhraseQuery(org.apache.lucene.search.PhraseQuery) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) ArrayList(java.util.ArrayList) 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