Example usage for org.apache.lucene.search SynonymQuery SynonymQuery

List of usage examples for org.apache.lucene.search SynonymQuery SynonymQuery

Introduction

In this page you can find the example usage for org.apache.lucene.search SynonymQuery SynonymQuery.

Prototype

private SynonymQuery(TermAndBoost[] terms, String field) 

Source Link

Document

Creates a new SynonymQuery, matching any of the supplied terms.

Usage

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