Expert: obtains the ordinal of the field value from the default Lucene
{@link Lucene.Net.Search.FieldCache FieldCache} using getStringIndex()
and reverses the order.
The native lucene index order is used to assign an ordinal value for each field value.
Field values (terms) are lexicographically ordered by unicode value, and numbered starting at 1.
Example of reverse ordinal (rord):
If there were only three field values: "apple","banana","pear"
then rord("apple")=3, rord("banana")=2, ord("pear")=1 WARNING: rord() depends on the position in an index and can thus change when other documents are inserted or deleted, or if a MultiSearcher is used. WARNING: The status of the Search.Function package is experimental. The APIs introduced here might change in the future and will not be supported anymore in such a case.NOTE: with the switch in 2.9 to segment-based searching, if {@link #getValues} is invoked with a composite (multi-segment) reader, this can easily cause double RAM usage for the values in the FieldCache. It's best to switch your application to pass only atomic (single segment) readers to this API. Alternatively, for a short-term fix, you could wrap your ValueSource using {@link MultiValueSource}, which costs more CPU per lookup but will not consume double the FieldCache RAM.
Namespace: Lucene.Net.Search.FunctionExample of reverse ordinal (rord):
If there were only three field values: "apple","banana","pear"
then rord("apple")=3, rord("banana")=2, ord("pear")=1 WARNING: rord() depends on the position in an index and can thus change when other documents are inserted or deleted, or if a MultiSearcher is used. WARNING: The status of the Search.Function package is experimental. The APIs introduced here might change in the future and will not be supported anymore in such a case.NOTE: with the switch in 2.9 to segment-based searching, if {@link #getValues} is invoked with a composite (multi-segment) reader, this can easily cause double RAM usage for the values in the FieldCache. It's best to switch your application to pass only atomic (single segment) readers to this API. Alternatively, for a short-term fix, you could wrap your ValueSource using {@link MultiValueSource}, which costs more CPU per lookup but will not consume double the FieldCache RAM.
Assembly: Lucene.Net (in Lucene.Net.dll) Version: 2.9.4.1
Syntax
C# |
---|
[SerializableAttribute] public class ReverseOrdFieldSource : ValueSource |
Visual Basic |
---|
<SerializableAttribute> _ Public Class ReverseOrdFieldSource _ Inherits ValueSource |
Visual C++ |
---|
[SerializableAttribute] public ref class ReverseOrdFieldSource : public ValueSource |
Inheritance Hierarchy
System..::..Object
Lucene.Net.Search.Function..::..ValueSource
Lucene.Net.Search.Function..::..ReverseOrdFieldSource
Lucene.Net.Search.Function..::..ValueSource
Lucene.Net.Search.Function..::..ReverseOrdFieldSource