public class PhraseQuery extends Query
"new york"
.
This query may be combined with other terms or queries with a BooleanQuery
.
NOTE:
All terms in the phrase must match, even those at the same position. If you
have terms at the same position, perhaps synonyms, you probably want MultiPhraseQuery
instead which only requires one term at a position to match.
Also, Leading holes don't have any particular meaning for this query
and will be ignored. For instance this query:
PhraseQuery.Builder builder = new PhraseQuery.Builder(); builder.add(new Term("body", "one"), 4); builder.add(new Term("body", "two"), 5); PhraseQuery pq = builder.build();is equivalent to the below query:
PhraseQuery.Builder builder = new PhraseQuery.Builder(); builder.add(new Term("body", "one"), 0); builder.add(new Term("body", "two"), 1); PhraseQuery pq = builder.build();
Modifier and Type | Class and Description |
---|---|
static class |
PhraseQuery.Builder
A builder for phrase queries.
|
Constructor and Description |
---|
PhraseQuery(int slop,
String field,
BytesRef... terms)
Create a phrase query which will match documents that contain the given
list of terms at consecutive positions in
field , and at a
maximum edit distance of slop . |
PhraseQuery(int slop,
String field,
String... terms)
Create a phrase query which will match documents that contain the given
list of terms at consecutive positions in
field , and at a
maximum edit distance of slop . |
PhraseQuery(String field,
BytesRef... terms)
Create a phrase query which will match documents that contain the given
list of terms at consecutive positions in
field . |
PhraseQuery(String field,
String... terms)
Create a phrase query which will match documents that contain the given
list of terms at consecutive positions in
field . |
Modifier and Type | Method and Description |
---|---|
Weight |
createWeight(IndexSearcher searcher,
boolean needsScores)
Expert: Constructs an appropriate Weight implementation for this query.
|
boolean |
equals(Object o)
Returns true iff
o is equal to this. |
int[] |
getPositions()
Returns the relative positions of terms in this phrase.
|
int |
getSlop()
Return the slop for this
PhraseQuery . |
Term[] |
getTerms()
Returns the list of terms in this phrase.
|
int |
hashCode()
Returns a hash code value for this object.
|
Query |
rewrite(IndexReader reader)
Expert: called to re-write queries into primitive queries.
|
String |
toString(String f)
Prints a user-readable version of this query.
|
public PhraseQuery(int slop, String field, String... terms)
field
, and at a
maximum edit distance of slop
. For more complicated use-cases,
use PhraseQuery.Builder
.getSlop()
public PhraseQuery(String field, String... terms)
field
.public PhraseQuery(int slop, String field, BytesRef... terms)
field
, and at a
maximum edit distance of slop
. For more complicated use-cases,
use PhraseQuery.Builder
.getSlop()
public int getSlop()
PhraseQuery
.
The slop is an edit distance between respective positions of terms as
defined in this PhraseQuery
and the positions of terms in a
document.
For instance, when searching for "quick fox"
, it is expected that
the difference between the positions of fox
and quick
is 1.
So "a quick brown fox"
would be at an edit distance of 1 since the
difference of the positions of fox
and quick
is 2.
Similarly, "the fox is quick"
would be at an edit distance of 3
since the difference of the positions of fox
and quick
is -2.
The slop defines the maximum edit distance for a document to match.
More exact matches are scored higher than sloppier matches, thus search results are sorted by exactness.
public Term[] getTerms()
public int[] getPositions()
public Query rewrite(IndexReader reader) throws IOException
Query
rewrite
in class Query
IOException
public Weight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException
Query
Only implemented by primitive queries, which re-write to themselves.
createWeight
in class Query
needsScores
- True if document scores (Scorer.score()
) or match
frequencies (Scorer.freq()
) are needed.IOException
public boolean equals(Object o)
o
is equal to this.Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.