public class RankField extends FieldType
RankField
s can be used to store scoring factors to improve document ranking. They should be used
in combination with RankQParserPlugin
. To use:
Define the RankField
fieldType
in your schema:
<fieldType name="rank" class="solr.RankField" />
Add fields to the schema, i.e.:
<field name="pagerank" type="rank" />Query using the
RankQParserPlugin
, for example
http://localhost:8983/solr/techproducts?q=memory _query_:{!rank f='pagerank', function='log' scalingFactor='1.2'}
RankQParserPlugin
FieldType.DefaultAnalyzer, FieldType.MultiValueSelector
Modifier and Type | Field and Description |
---|---|
static String |
INTERNAL_RANK_FIELD_NAME |
ANALYZER, args, AUTO_GENERATE_PHRASE_QUERIES, CHAR_FILTER, CHAR_FILTERS, CLASS_NAME, docValuesFormat, ENABLE_GRAPH_QUERIES, falseProperties, FILTER, FILTERS, INDEX, INDEX_ANALYZER, MULTI_TERM, MULTI_TERM_ANALYZER, POLY_FIELD_SEPARATOR, postingsFormat, properties, QUERY, QUERY_ANALYZER, similarity, SIMILARITY, similarityFactory, SYNONYM_QUERY_STYLE, TOKENIZER, trueProperties, TYPE, TYPE_NAME, typeName
BINARY, DOC_VALUES, INDEXED, LARGE_FIELD, MULTIVALUED, OMIT_NORMS, OMIT_POSITIONS, OMIT_TF_POSITIONS, REQUIRED, SORT_MISSING_FIRST, SORT_MISSING_LAST, STORE_OFFSETS, STORE_TERMOFFSETS, STORE_TERMPAYLOADS, STORE_TERMPOSITIONS, STORE_TERMVECTORS, STORED, TOKENIZED, UNINVERTIBLE, USE_DOCVALUES_AS_STORED
Constructor and Description |
---|
RankField() |
Modifier and Type | Method and Description |
---|---|
protected IndexableField |
createField(String name,
String val,
IndexableFieldType type)
Create the field from native Lucene parts.
|
Query |
getExistenceQuery(QParser parser,
SchemaField field)
Returns a Query instance for doing existence searches for a field.
|
Query |
getFieldQuery(QParser parser,
SchemaField field,
String externalVal)
Returns a Query instance for doing searches against a field.
|
SortField |
getSortField(SchemaField field,
boolean top)
Returns the SortField instance that should be used to sort fields
of this type.
|
protected Query |
getSpecializedRangeQuery(QParser parser,
SchemaField field,
String part1,
String part2,
boolean minInclusive,
boolean maxInclusive)
Returns a Query instance for doing range searches on this field type.
|
UninvertingReader.Type |
getUninversionType(SchemaField sf)
If DocValues is not enabled for a field, but it's indexed, docvalues can be constructed
on the fly (uninverted, aka fieldcache) on the first request to sort, facet, etc.
|
protected void |
init(IndexSchema schema,
Map<String,String> args)
subclasses should initialize themselves with the args provided
and remove valid arguments.
|
void |
write(TextResponseWriter writer,
String name,
IndexableField f)
calls back to TextResponseWriter to write the field value
|
checkSchemaField, checkSupportsDocValues, createField, createFields, getAnalyzerProperties, getClassArg, getDefaultMultiValueSelectorForSort, getDocValuesFormat, getIndexAnalyzer, getNamedPropertyValues, getNonFieldPropertyArgs, getNumberType, getNumericSort, getPostingsFormat, getPrefixQuery, getQueryAnalyzer, getRangeQuery, getRewriteMethod, getSetQuery, getSimilarity, getSimilarityFactory, getSingleValueSource, getSortedNumericSortField, getSortedSetSortField, getSortField, getSpecializedExistenceQuery, getStringSort, getTypeName, getValueSource, hasProperty, indexedToReadable, indexedToReadable, isExplicitAnalyzer, isExplicitQueryAnalyzer, isMultiValued, isPointField, isPolyField, isTokenized, isUtf8Field, marshalBase64SortValue, marshalSortValue, marshalStringSortValue, multiValuedFieldCache, readableToIndexed, readableToIndexed, restrictProps, setArgs, setIndexAnalyzer, setIsExplicitAnalyzer, setIsExplicitQueryAnalyzer, setQueryAnalyzer, setSimilarity, storedToIndexed, storedToReadable, supportsAnalyzers, toExternal, toInternal, toNativeType, toObject, toObject, toString, treatUnboundedRangeAsExistence, unmarshalBase64SortValue, unmarshalSortValue, unmarshalStringSortValue, useDocValuesAsStored, write
public static final String INTERNAL_RANK_FIELD_NAME
public UninvertingReader.Type getUninversionType(SchemaField sf)
FieldType
If DocValues is not enabled for a field, but it's indexed, docvalues can be constructed on the fly (uninverted, aka fieldcache) on the first request to sort, facet, etc. This specifies the structure to use.
This method will not be used if the field is (effectively) uninvertible="false"
getUninversionType
in class FieldType
sf
- field instancenull
(to disallow uninversion for the field)SchemaField.isUninvertible()
public void write(TextResponseWriter writer, String name, IndexableField f) throws IOException
FieldType
Sub-classes should prefer using FieldType.toExternal(IndexableField)
or FieldType.toObject(IndexableField)
to get the writeable external value of f
instead of directly using f.stringValue()
or f.binaryValue()
write
in class FieldType
IOException
protected void init(IndexSchema schema, Map<String,String> args)
FieldType
protected IndexableField createField(String name, String val, IndexableFieldType type)
FieldType
createField
in class FieldType
name
- The name of the fieldval
- The _internal_ value to indextype
- FieldType
IndexableField
.public Query getExistenceQuery(QParser parser, SchemaField field)
FieldType
FieldType.getSpecializedExistenceQuery(org.apache.solr.search.QParser, org.apache.solr.schema.SchemaField)
, which defaults to an unbounded rangeQuery.
This method should only be overriden whenever a fieldType does not support DocValuesFieldExistsQuery
or NormsFieldExistsQuery
.
If a fieldType does not support an unbounded rangeQuery as an existenceQuery (such as double
or float
fields), FieldType.getSpecializedExistenceQuery(org.apache.solr.search.QParser, org.apache.solr.schema.SchemaField)
should be overriden.
getExistenceQuery
in class FieldType
parser
- The QParser
calling the methodfield
- The SchemaField
of the field to searchQuery
instance.public Query getFieldQuery(QParser parser, SchemaField field, String externalVal)
FieldType
getFieldQuery
in class FieldType
parser
- The QParser
calling the methodfield
- The SchemaField
of the field to searchexternalVal
- The String representation of the value to searchQuery
instance. This implementation returns a TermQuery
but overriding queries may notprotected Query getSpecializedRangeQuery(QParser parser, SchemaField field, String part1, String part2, boolean minInclusive, boolean maxInclusive)
FieldType
SolrQueryParser
currently passes part1
and part2
as null if they are '*' respectively. minInclusive
and maxInclusive
are both true
currently by SolrQueryParser but that may change in the future. Also, other QueryParser implementations may have
different semantics.
Sub-classes should override this method to provide their own range query implementation. They should strive to
handle nulls in part1
and/or part2
as well as unequal minInclusive
and maxInclusive
parameters gracefully.
This method does not, and should not, check for or handle existence queries, please look at FieldType.getRangeQuery(org.apache.solr.search.QParser, org.apache.solr.schema.SchemaField, java.lang.String, java.lang.String, boolean, boolean)
for that logic.
getSpecializedRangeQuery
in class FieldType
parser
- the QParser
calling the methodfield
- the schema fieldpart1
- the lower boundary of the range, nulls are allowed.part2
- the upper boundary of the range, nulls are allowedminInclusive
- whether the minimum of the range is inclusive or notmaxInclusive
- whether the maximum of the range is inclusive or notpublic SortField getSortField(SchemaField field, boolean top)
FieldType
Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.