List of usage examples for org.apache.lucene.search SynonymQuery SynonymQuery
private SynonymQuery(TermAndBoost[] terms, String field)
From source file:org.elasticsearch.analysis.common.DisableGraphQueryTests.java
License:Apache License
@Before public void setup() { Settings settings = Settings.builder().put("index.analysis.filter.shingle.type", "shingle") .put("index.analysis.filter.shingle.output_unigrams", false) .put("index.analysis.filter.shingle.min_size", 2).put("index.analysis.filter.shingle.max_size", 2) .put("index.analysis.filter.shingle_unigram.type", "shingle") .put("index.analysis.filter.shingle_unigram.output_unigrams", true) .put("index.analysis.filter.shingle_unigram.min_size", 2) .put("index.analysis.filter.shingle_unigram.max_size", 2) .put("index.analysis.analyzer.text_shingle.tokenizer", "whitespace") .put("index.analysis.analyzer.text_shingle.filter", "lowercase, shingle") .put("index.analysis.analyzer.text_shingle_unigram.tokenizer", "whitespace") .put("index.analysis.analyzer.text_shingle_unigram.filter", "lowercase, shingle_unigram").build(); indexService = createIndex("test", settings, "t", "text_shingle", "type=text,analyzer=text_shingle", "text_shingle_unigram", "type=text,analyzer=text_shingle_unigram"); shardContext = indexService.newQueryShardContext(0, null, () -> 0L, null); // parsed queries for "text_shingle_unigram:(foo bar baz)" with query parsers // that ignores position length attribute expectedQueryWithUnigram = new BooleanQuery.Builder() .add(new SynonymQuery(new Term("text_shingle_unigram", "foo"), new Term("text_shingle_unigram", "foo bar")), BooleanClause.Occur.SHOULD) .add(new SynonymQuery(new Term("text_shingle_unigram", "bar"), new Term("text_shingle_unigram", "bar baz")), BooleanClause.Occur.SHOULD) .add(new TermQuery(new Term("text_shingle_unigram", "baz")), BooleanClause.Occur.SHOULD).build(); // parsed query for "text_shingle_unigram:\"foo bar baz\" with query parsers // that ignores position length attribute expectedPhraseQueryWithUnigram = new MultiPhraseQuery.Builder() .add(new Term[] { new Term("text_shingle_unigram", "foo"), new Term("text_shingle_unigram", "foo bar") }, 0) .add(new Term[] { new Term("text_shingle_unigram", "bar"), new Term("text_shingle_unigram", "bar baz") }, 1) .add(new Term[] { new Term("text_shingle_unigram", "baz"), }, 2).build(); // parsed query for "text_shingle:(foo bar baz) expectedQuery = new BooleanQuery.Builder() .add(new TermQuery(new Term("text_shingle", "foo bar")), BooleanClause.Occur.SHOULD) .add(new TermQuery(new Term("text_shingle", "bar baz")), BooleanClause.Occur.SHOULD) .add(new TermQuery(new Term("text_shingle", "baz biz")), BooleanClause.Occur.SHOULD).build(); // parsed query for "text_shingle:"foo bar baz" expectedPhraseQuery = new PhraseQuery.Builder().add(new Term("text_shingle", "foo bar")) .add(new Term("text_shingle", "bar baz")).add(new Term("text_shingle", "baz biz")).build(); }
From source file:org.elasticsearch.index.query.QueryStringQueryBuilderTests.java
License:Apache License
public void testToQueryWilcardQueryWithSynonyms() throws Exception { assumeTrue("test runs only when at least a type is registered", getCurrentTypes().length > 0); for (Operator op : Operator.values()) { BooleanClause.Occur defaultOp = op.toBooleanClauseOccur(); MapperQueryParser queryParser = new MapperQueryParser(createShardContext()); QueryParserSettings settings = new QueryParserSettings("first foo-bar-foobar* last"); settings.defaultField(STRING_FIELD_NAME); settings.fieldsAndWeights(Collections.emptyMap()); settings.analyzeWildcard(true);//w ww.j a v a 2 s . c om settings.fuzziness(Fuzziness.AUTO); settings.rewriteMethod(MultiTermQuery.CONSTANT_SCORE_REWRITE); settings.defaultOperator(op.toQueryParserOperator()); settings.forceAnalyzer(new MockRepeatAnalyzer()); queryParser.reset(settings); Query query = queryParser.parse("first foo-bar-foobar* last"); Query expectedQuery = new BooleanQuery.Builder() .add(new BooleanClause( new SynonymQuery(new Term(STRING_FIELD_NAME, "first"), new Term(STRING_FIELD_NAME, "first")), defaultOp)) .add(new BooleanQuery.Builder() .add(new BooleanClause( new SynonymQuery(new Term(STRING_FIELD_NAME, "foo"), new Term(STRING_FIELD_NAME, "foo")), defaultOp)) .add(new BooleanClause(new SynonymQuery(new Term(STRING_FIELD_NAME, "bar"), new Term(STRING_FIELD_NAME, "bar")), defaultOp)) .add(new BooleanQuery.Builder() .add(new BooleanClause(new PrefixQuery(new Term(STRING_FIELD_NAME, "foobar")), BooleanClause.Occur.SHOULD)) .add(new BooleanClause(new PrefixQuery(new Term(STRING_FIELD_NAME, "foobar")), BooleanClause.Occur.SHOULD)) .setDisableCoord(true).build(), defaultOp) .build(), defaultOp) .add(new BooleanClause(new SynonymQuery(new Term(STRING_FIELD_NAME, "last"), new Term(STRING_FIELD_NAME, "last")), defaultOp)) .build(); assertThat(query, Matchers.equalTo(expectedQuery)); } }
From source file:org.elasticsearch.index.query.SimpleQueryParserTests.java
License:Apache License
public void testAnalyzerWildcardWithSynonyms() { SimpleQueryParser.Settings settings = new SimpleQueryParser.Settings(); settings.analyzeWildcard(true);/*from w ww .j av a 2s . c o m*/ Map<String, Float> weights = new HashMap<>(); weights.put("field1", 1.0f); SimpleQueryParser parser = new MockSimpleQueryParser(new MockRepeatAnalyzer(), weights, -1, settings); for (Operator op : Operator.values()) { BooleanClause.Occur defaultOp = op.toBooleanClauseOccur(); parser.setDefaultOperator(defaultOp); Query query = parser.parse("first foo-bar-foobar* last"); Query expectedQuery = new BooleanQuery.Builder() .add(new BooleanClause(new SynonymQuery(new Term("field1", "first"), new Term("field1", "first")), defaultOp)) .add(new BooleanQuery.Builder() .add(new BooleanClause( new SynonymQuery(new Term("field1", "foo"), new Term("field1", "foo")), defaultOp)) .add(new BooleanClause( new SynonymQuery(new Term("field1", "bar"), new Term("field1", "bar")), defaultOp)) .add(new BooleanQuery.Builder() .add(new BooleanClause(new PrefixQuery(new Term("field1", "foobar")), BooleanClause.Occur.SHOULD)) .add(new BooleanClause(new PrefixQuery(new Term("field1", "foobar")), BooleanClause.Occur.SHOULD)) .setDisableCoord(true).build(), defaultOp) .build(), defaultOp) .add(new BooleanClause(new SynonymQuery(new Term("field1", "last"), new Term("field1", "last")), defaultOp)) .build(); assertThat(query, equalTo(expectedQuery)); } }
From source file:org.elasticsearch.xpack.security.authz.accesscontrol.FieldExtractorTests.java
License:Open Source License
public void testSynonym() { Set<String> fields = new HashSet<>(); SynonymQuery query = new SynonymQuery(new Term("foo", "bar"), new Term("foo", "baz")); FieldExtractor.extractFields(query, fields); assertEquals(asSet("foo"), fields); }
From source file:org.tallison.lucene.queryparser.spans.TestQPTestBaseSpanQuery.java
License:Apache License
public void testSynonyms() throws Exception { SpanQuery expectedSpan = new SpanOrQuery(new SpanQuery[] { new SpanTermQuery(new Term("field", "dog")), new SpanTermQuery(new Term("field", "dogs")) }); BooleanQuery.Builder expectedB = new BooleanQuery.Builder(); expectedB.add(new TermQuery(new Term("field", "dogs")), BooleanClause.Occur.SHOULD); expectedB.add(new TermQuery(new Term("field", "dog")), BooleanClause.Occur.SHOULD); Query expected = new SynonymQuery(new Term("field", "dog"), new Term("field", "dogs")); SpanQueryParser qp = new SpanQueryParser("field", new MockSynonymAnalyzer(), null); assertEquals(expected, qp.parse("dogs")); assertEquals(expectedSpan, qp.parse("\"dogs\"")); qp.setDefaultOperator(Operator.AND); assertEquals(expected, qp.parse("dogs")); assertEquals(expectedSpan, qp.parse("\"dogs\"")); expected = new BoostQuery(expected, 2f); expectedSpan = new SpanBoostQuery(expectedSpan, 2f); assertEquals(expected, qp.parse("dogs^2")); assertEquals(expectedSpan, qp.parse("\"dogs\"^2")); }