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);
}
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"));
}
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"));
}
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));
}
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);
}
Aggregations