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,
ScoreMode scoreMode,
float boost)
Expert: Constructs an appropriate Weight implementation for this query.
|
boolean |
equals(Object other)
Returns true iff
o is equal to this. |
String |
getField()
Returns the field this query applies to
|
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.
|
void |
visit(QueryVisitor visitor)
Recurse through the query tree, visiting any child queries
|
classHash, sameClassAs, toString
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 String getField()
public Term[] getTerms()
public int[] getPositions()
public Query rewrite(IndexReader reader) throws IOException
Query
rewrite
in class Query
IOException
public void visit(QueryVisitor visitor)
Query
public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException
Query
Only implemented by primitive queries, which re-write to themselves.
createWeight
in class Query
scoreMode
- How the produced scorers will be consumed.boost
- The boost that is propagated by the parent queries.IOException
public boolean equals(Object other)
o
is equal to this.equals
in class Query
Query.sameClassAs(Object)
,
Query.classHash()
public int hashCode()
hashCode
in class Query
Query.equals(Object)
Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.