Search in sources :

Example 11 with Result

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

the class QueryAnalyzerTests method testEmptyQueries.

public void testEmptyQueries() {
    BooleanQuery.Builder builder = new BooleanQuery.Builder();
    Result result = analyze(builder.build(), Version.CURRENT);
    assertEquals(result, Result.MATCH_NONE);
    result = analyze(new DisjunctionMaxQuery(Collections.emptyList(), 0f), Version.CURRENT);
    assertEquals(result, Result.MATCH_NONE);
}
Also used : BooleanQuery(org.apache.lucene.search.BooleanQuery) DisjunctionMaxQuery(org.apache.lucene.search.DisjunctionMaxQuery) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 12 with Result

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

the class QueryAnalyzerTests method testExtractQueryMetadata_blendedTermQuery.

public void testExtractQueryMetadata_blendedTermQuery() {
    Term[] termsArr = new Term[] { new Term("_field", "_term1"), new Term("_field", "_term2") };
    BlendedTermQuery commonTermsQuery = BlendedTermQuery.dismaxBlendedQuery(termsArr, 1.0f);
    Result result = analyze(commonTermsQuery, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.minimumShouldMatch, equalTo(1));
    List<QueryAnalyzer.QueryExtraction> terms = new ArrayList<>(result.extractions);
    terms.sort(Comparator.comparing(qt -> qt.term));
    assertThat(terms.size(), equalTo(2));
    assertThat(terms.get(0).field(), equalTo("_field"));
    assertThat(terms.get(0).text(), equalTo("_term1"));
    assertThat(terms.get(1).field(), equalTo("_field"));
    assertThat(terms.get(1).text(), equalTo("_term2"));
}
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) BlendedTermQuery(org.apache.lucene.queries.BlendedTermQuery) Term(org.apache.lucene.index.Term) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 13 with Result

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

the class QueryAnalyzerTests method testFunctionScoreQuery.

public void testFunctionScoreQuery() {
    TermQuery termQuery = new TermQuery(new Term("_field", "_value"));
    FunctionScoreQuery functionScoreQuery = new FunctionScoreQuery(termQuery, new RandomScoreFunction(0, 0, null));
    Result result = analyze(functionScoreQuery, Version.CURRENT);
    assertThat(result.verified, is(true));
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertTermsEqual(result.extractions, new Term("_field", "_value"));
    functionScoreQuery = new FunctionScoreQuery(termQuery, new RandomScoreFunction(0, 0, null), CombineFunction.MULTIPLY, 1f, 10f);
    result = analyze(functionScoreQuery, Version.CURRENT);
    assertThat(result.verified, is(false));
    assertThat(result.minimumShouldMatch, equalTo(1));
    assertTermsEqual(result.extractions, new Term("_field", "_value"));
}
Also used : BlendedTermQuery(org.apache.lucene.queries.BlendedTermQuery) SpanTermQuery(org.apache.lucene.search.spans.SpanTermQuery) TermQuery(org.apache.lucene.search.TermQuery) FunctionScoreQuery(org.opensearch.common.lucene.search.function.FunctionScoreQuery) Term(org.apache.lucene.index.Term) RandomScoreFunction(org.opensearch.common.lucene.search.function.RandomScoreFunction) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 14 with Result

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

the class QueryAnalyzerTests method testselectBestResult_random.

public void testselectBestResult_random() {
    Set<QueryExtraction> terms1 = new HashSet<>();
    int shortestTerms1Length = Integer.MAX_VALUE;
    int sumTermLength = randomIntBetween(1, 128);
    while (sumTermLength > 0) {
        int length = randomInt(sumTermLength);
        shortestTerms1Length = Math.min(shortestTerms1Length, length);
        terms1.add(new QueryExtraction(new Term("field", randomAlphaOfLength(length))));
        sumTermLength -= length;
    }
    Set<QueryExtraction> terms2 = new HashSet<>();
    int shortestTerms2Length = Integer.MAX_VALUE;
    sumTermLength = randomIntBetween(1, 128);
    while (sumTermLength > 0) {
        int length = randomInt(sumTermLength);
        shortestTerms2Length = Math.min(shortestTerms2Length, length);
        terms2.add(new QueryExtraction(new Term("field", randomAlphaOfLength(length))));
        sumTermLength -= length;
    }
    Result result1 = new Result(true, terms1, 1);
    Result result2 = new Result(true, terms2, 1);
    Result result = selectBestResult(result1, result2);
    Set<QueryExtraction> expected = shortestTerms1Length >= shortestTerms2Length ? terms1 : terms2;
    assertThat(result.extractions, sameInstance(expected));
}
Also used : QueryExtraction(org.opensearch.percolator.QueryAnalyzer.QueryExtraction) Term(org.apache.lucene.index.Term) DoublePoint(org.apache.lucene.document.DoublePoint) LatLonPoint(org.apache.lucene.document.LatLonPoint) InetAddressPoint(org.apache.lucene.document.InetAddressPoint) LongPoint(org.apache.lucene.document.LongPoint) IntPoint(org.apache.lucene.document.IntPoint) FloatPoint(org.apache.lucene.document.FloatPoint) HalfFloatPoint(org.apache.lucene.document.HalfFloatPoint) HashSet(java.util.HashSet) Result(org.opensearch.percolator.QueryAnalyzer.Result) QueryAnalyzer.selectBestResult(org.opensearch.percolator.QueryAnalyzer.selectBestResult)

Example 15 with Result

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

the class QueryAnalyzerTests method testExtractQueryMetadata_multiPhraseQuery_dups.

public void testExtractQueryMetadata_multiPhraseQuery_dups() {
    MultiPhraseQuery multiPhraseQuery = new MultiPhraseQuery.Builder().add(new Term("_field", "_term1")).add(new Term[] { new Term("_field", "_term1"), new Term("_field", "_term2") }).build();
    Result result = analyze(multiPhraseQuery, Version.CURRENT);
    assertFalse(result.matchAllDocs);
    assertFalse(result.verified);
    assertTermsEqual(result.extractions, new Term("_field", "_term1"), new Term("_field", "_term2"));
    // because of the dup term
    assertEquals(1, result.minimumShouldMatch);
}
Also used : 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)

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