public class RankField extends FieldType
RankFields 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'}
RankQParserPluginFieldType.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, typeNameBINARY, 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, writepublic static final String INTERNAL_RANK_FIELD_NAME
public UninvertingReader.Type getUninversionType(SchemaField sf)
FieldTypeIf 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 FieldTypesf - field instancenull (to disallow uninversion for the field)SchemaField.isUninvertible()public void write(TextResponseWriter writer, String name, IndexableField f) throws IOException
FieldTypewrite in class FieldTypeIOExceptionprotected void init(IndexSchema schema, Map<String,String> args)
FieldTypeprotected IndexableField createField(String name, String val, IndexableFieldType type)
FieldTypecreateField in class FieldTypename - The name of the fieldval - The _internal_ value to indextype - FieldTypeIndexableField.public Query getExistenceQuery(QParser parser, SchemaField field)
FieldTypeFieldType.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 FieldTypeparser - The QParser calling the methodfield - The SchemaField of the field to searchQuery instance.public Query getFieldQuery(QParser parser, SchemaField field, String externalVal)
FieldTypegetFieldQuery in class FieldTypeparser - 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)
FieldTypeSolrQueryParser
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 FieldTypeparser - 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)
FieldTypeCopyright © 2000-2020 Apache Software Foundation. All Rights Reserved.