List of usage examples for org.apache.lucene.search PhraseQuery PhraseQuery
public PhraseQuery(int slop, String field, BytesRef... terms)
From source file:org.elasticsearch.index.mapper.internal.TypeFieldTypeTests.java
License:Apache License
public void testTermQuery() throws Exception { Directory dir = newDirectory();/*from w ww . j ava 2 s . c o m*/ IndexWriter w = new IndexWriter(dir, newIndexWriterConfig()); Document doc = new Document(); StringField type = new StringField(TypeFieldMapper.NAME, "my_type", Store.NO); doc.add(type); w.addDocument(doc); w.addDocument(doc); IndexReader reader = DirectoryReader.open(w); TypeFieldMapper.TypeFieldType ft = new TypeFieldMapper.TypeFieldType(); ft.setName(TypeFieldMapper.NAME); Query query = ft.termQuery("my_type", null); assertEquals(new MatchAllDocsQuery(), query.rewrite(reader)); // Make sure that Lucene actually simplifies the query when there is a single type Query userQuery = new PhraseQuery("body", "quick", "fox"); Query filteredQuery = new BooleanQuery.Builder().add(userQuery, Occur.MUST).add(query, Occur.FILTER) .build(); Query rewritten = new IndexSearcher(reader).rewrite(filteredQuery); assertEquals(userQuery, rewritten); type.setStringValue("my_type2"); w.addDocument(doc); reader.close(); reader = DirectoryReader.open(w); assertEquals(new ConstantScoreQuery(new TermQuery(new Term(TypeFieldMapper.NAME, "my_type"))), query.rewrite(reader)); IOUtils.close(reader, w, dir); }
From source file:org.elasticsearch.index.percolator.ExtractQueryTermsServiceTests.java
License:Apache License
public void testExtractQueryMetadata_phraseQuery() { PhraseQuery phraseQuery = new PhraseQuery("_field", "_term1", "term2"); List<Term> terms = new ArrayList<>(ExtractQueryTermsService.extractQueryTerms(phraseQuery)); assertThat(terms.size(), equalTo(1)); assertThat(terms.get(0).field(), equalTo(phraseQuery.getTerms()[0].field())); assertThat(terms.get(0).bytes(), equalTo(phraseQuery.getTerms()[0].bytes())); }
From source file:org.elasticsearch.index.percolator.ExtractQueryTermsServiceTests.java
License:Apache License
public void testExtractQueryMetadata_booleanQuery() { BooleanQuery.Builder builder = new BooleanQuery.Builder(); TermQuery termQuery1 = new TermQuery(new Term("_field", "_term")); builder.add(termQuery1, BooleanClause.Occur.SHOULD); PhraseQuery phraseQuery = new PhraseQuery("_field", "_term1", "term2"); builder.add(phraseQuery, BooleanClause.Occur.SHOULD); BooleanQuery.Builder subBuilder = new BooleanQuery.Builder(); TermQuery termQuery2 = new TermQuery(new Term("_field1", "_term")); subBuilder.add(termQuery2, BooleanClause.Occur.MUST); TermQuery termQuery3 = new TermQuery(new Term("_field3", "_long_term")); subBuilder.add(termQuery3, BooleanClause.Occur.MUST); builder.add(subBuilder.build(), BooleanClause.Occur.SHOULD); BooleanQuery booleanQuery = builder.build(); List<Term> terms = new ArrayList<>(ExtractQueryTermsService.extractQueryTerms(booleanQuery)); Collections.sort(terms);//from www . j a va 2 s . com assertThat(terms.size(), equalTo(3)); assertThat(terms.get(0).field(), equalTo(termQuery1.getTerm().field())); assertThat(terms.get(0).bytes(), equalTo(termQuery1.getTerm().bytes())); assertThat(terms.get(1).field(), equalTo(phraseQuery.getTerms()[0].field())); assertThat(terms.get(1).bytes(), equalTo(phraseQuery.getTerms()[0].bytes())); assertThat(terms.get(2).field(), equalTo(termQuery3.getTerm().field())); assertThat(terms.get(2).bytes(), equalTo(termQuery3.getTerm().bytes())); }
From source file:org.elasticsearch.index.percolator.ExtractQueryTermsServiceTests.java
License:Apache License
public void testExtractQueryMetadata_booleanQueryWithMustNot() { BooleanQuery.Builder builder = new BooleanQuery.Builder(); TermQuery termQuery1 = new TermQuery(new Term("_field", "_term")); builder.add(termQuery1, BooleanClause.Occur.MUST_NOT); PhraseQuery phraseQuery = new PhraseQuery("_field", "_term1", "term2"); builder.add(phraseQuery, BooleanClause.Occur.SHOULD); BooleanQuery booleanQuery = builder.build(); List<Term> terms = new ArrayList<>(ExtractQueryTermsService.extractQueryTerms(booleanQuery)); assertThat(terms.size(), equalTo(1)); assertThat(terms.get(0).field(), equalTo(phraseQuery.getTerms()[0].field())); assertThat(terms.get(0).bytes(), equalTo(phraseQuery.getTerms()[0].bytes())); }
From source file:org.elasticsearch.index.shard.ElasticsearchQueryCachingPolicyTests.java
License:Apache License
public void testDoesNotCacheTermQueries() throws IOException { QueryCachingPolicy policy = QueryCachingPolicy.ALWAYS_CACHE; assertTrue(policy.shouldCache(new TermQuery(new Term("foo", "bar")))); assertTrue(policy.shouldCache(new PhraseQuery("foo", "bar", "baz"))); policy = new ElasticsearchQueryCachingPolicy(policy); assertFalse(policy.shouldCache(new TermQuery(new Term("foo", "bar")))); assertTrue(policy.shouldCache(new PhraseQuery("foo", "bar", "baz"))); }
From source file:org.elasticsearch.index.shard.ElasticsearchQueryCachingPolicyTests.java
License:Apache License
public void testDoesNotPutTermQueriesIntoTheHistory() { boolean[] used = new boolean[1]; QueryCachingPolicy policy = new QueryCachingPolicy() { @Override/* w ww. j av a 2 s . c o m*/ public boolean shouldCache(Query query) throws IOException { throw new UnsupportedOperationException(); } @Override public void onUse(Query query) { used[0] = true; } }; policy = new ElasticsearchQueryCachingPolicy(policy); policy.onUse(new TermQuery(new Term("foo", "bar"))); assertFalse(used[0]); policy.onUse(new PhraseQuery("foo", "bar", "baz")); assertTrue(used[0]); }
From source file:org.elasticsearch.percolator.ExtractQueryTermsServiceTests.java
License:Apache License
public void testExtractQueryMetadata_phraseQuery() { PhraseQuery phraseQuery = new PhraseQuery("_field", "_term1", "term2"); Result result = extractQueryTerms(phraseQuery); assertThat(result.verified, is(false)); List<Term> terms = new ArrayList<>(result.terms); assertThat(terms.size(), equalTo(1)); assertThat(terms.get(0).field(), equalTo(phraseQuery.getTerms()[0].field())); assertThat(terms.get(0).bytes(), equalTo(phraseQuery.getTerms()[0].bytes())); }
From source file:org.elasticsearch.percolator.ExtractQueryTermsServiceTests.java
License:Apache License
public void testExtractQueryMetadata_booleanQuery() { BooleanQuery.Builder builder = new BooleanQuery.Builder(); TermQuery termQuery1 = new TermQuery(new Term("_field", "_term")); builder.add(termQuery1, BooleanClause.Occur.SHOULD); PhraseQuery phraseQuery = new PhraseQuery("_field", "_term1", "term2"); builder.add(phraseQuery, BooleanClause.Occur.SHOULD); BooleanQuery.Builder subBuilder = new BooleanQuery.Builder(); TermQuery termQuery2 = new TermQuery(new Term("_field1", "_term")); subBuilder.add(termQuery2, BooleanClause.Occur.MUST); TermQuery termQuery3 = new TermQuery(new Term("_field3", "_long_term")); subBuilder.add(termQuery3, BooleanClause.Occur.MUST); builder.add(subBuilder.build(), BooleanClause.Occur.SHOULD); BooleanQuery booleanQuery = builder.build(); Result result = extractQueryTerms(booleanQuery); assertThat("Should clause with phrase query isn't verified, so entire query can't be verified", result.verified, is(false)); List<Term> terms = new ArrayList<>(result.terms); Collections.sort(terms);/*from www . java 2 s. c om*/ assertThat(terms.size(), equalTo(3)); assertThat(terms.get(0).field(), equalTo(termQuery1.getTerm().field())); assertThat(terms.get(0).bytes(), equalTo(termQuery1.getTerm().bytes())); assertThat(terms.get(1).field(), equalTo(phraseQuery.getTerms()[0].field())); assertThat(terms.get(1).bytes(), equalTo(phraseQuery.getTerms()[0].bytes())); assertThat(terms.get(2).field(), equalTo(termQuery3.getTerm().field())); assertThat(terms.get(2).bytes(), equalTo(termQuery3.getTerm().bytes())); }
From source file:org.elasticsearch.percolator.ExtractQueryTermsServiceTests.java
License:Apache License
public void testExtractQueryMetadata_booleanQueryWithMustNot() { BooleanQuery.Builder builder = new BooleanQuery.Builder(); TermQuery termQuery1 = new TermQuery(new Term("_field", "_term")); builder.add(termQuery1, BooleanClause.Occur.MUST_NOT); PhraseQuery phraseQuery = new PhraseQuery("_field", "_term1", "term2"); builder.add(phraseQuery, BooleanClause.Occur.SHOULD); BooleanQuery booleanQuery = builder.build(); Result result = extractQueryTerms(booleanQuery); assertThat(result.verified, is(false)); List<Term> terms = new ArrayList<>(result.terms); assertThat(terms.size(), equalTo(1)); assertThat(terms.get(0).field(), equalTo(phraseQuery.getTerms()[0].field())); assertThat(terms.get(0).bytes(), equalTo(phraseQuery.getTerms()[0].bytes())); }
From source file:org.elasticsearch.percolator.ExtractQueryTermsServiceTests.java
License:Apache License
public void testExactMatch_booleanQuery() { BooleanQuery.Builder builder = new BooleanQuery.Builder(); TermQuery termQuery1 = new TermQuery(new Term("_field", "_term1")); builder.add(termQuery1, BooleanClause.Occur.SHOULD); TermQuery termQuery2 = new TermQuery(new Term("_field", "_term2")); builder.add(termQuery2, BooleanClause.Occur.SHOULD); Result result = extractQueryTerms(builder.build()); assertThat("All clauses are exact, so candidate matches are verified", result.verified, is(true)); builder = new BooleanQuery.Builder(); builder.add(termQuery1, BooleanClause.Occur.SHOULD); PhraseQuery phraseQuery1 = new PhraseQuery("_field", "_term1", "_term2"); builder.add(phraseQuery1, BooleanClause.Occur.SHOULD); result = extractQueryTerms(builder.build()); assertThat("Clause isn't exact, so candidate matches are not verified", result.verified, is(false)); builder = new BooleanQuery.Builder(); builder.add(phraseQuery1, BooleanClause.Occur.SHOULD); PhraseQuery phraseQuery2 = new PhraseQuery("_field", "_term3", "_term4"); builder.add(phraseQuery2, BooleanClause.Occur.SHOULD); result = extractQueryTerms(builder.build()); assertThat("No clause is exact, so candidate matches are not verified", result.verified, is(false)); builder = new BooleanQuery.Builder(); builder.add(termQuery1, BooleanClause.Occur.MUST_NOT); builder.add(termQuery2, BooleanClause.Occur.SHOULD); result = extractQueryTerms(builder.build()); assertThat("There is a must_not clause, so candidate matches are not verified", result.verified, is(false)); builder = new BooleanQuery.Builder(); builder.setMinimumNumberShouldMatch(randomIntBetween(2, 32)); builder.add(termQuery1, BooleanClause.Occur.SHOULD); builder.add(termQuery2, BooleanClause.Occur.SHOULD); result = extractQueryTerms(builder.build()); assertThat("Minimum match is >= 1, so candidate matches are not verified", result.verified, is(false)); builder = new BooleanQuery.Builder(); builder.add(termQuery1, randomBoolean() ? BooleanClause.Occur.MUST : BooleanClause.Occur.FILTER); result = extractQueryTerms(builder.build()); assertThat("Single required clause, so candidate matches are verified", result.verified, is(false)); builder = new BooleanQuery.Builder(); builder.add(termQuery1, randomBoolean() ? BooleanClause.Occur.MUST : BooleanClause.Occur.FILTER); builder.add(termQuery2, randomBoolean() ? BooleanClause.Occur.MUST : BooleanClause.Occur.FILTER); result = extractQueryTerms(builder.build()); assertThat("Two or more required clauses, so candidate matches are not verified", result.verified, is(false));//from w w w . j a va 2 s . co m builder = new BooleanQuery.Builder(); builder.add(termQuery1, randomBoolean() ? BooleanClause.Occur.MUST : BooleanClause.Occur.FILTER); builder.add(termQuery2, BooleanClause.Occur.MUST_NOT); result = extractQueryTerms(builder.build()); assertThat("Required and prohibited clauses, so candidate matches are not verified", result.verified, is(false)); }