Expert: obtains the ordinal of the field value from the default Lucene
/// {@link Lucene.Net.Search.FieldCache Fieldcache} using getStringIndex().
///
/// The native lucene index order is used to assign an ordinal value for each field value.
///
/// Example:
///
If there were only three field values: "apple","banana","pear"
///
then ord("apple")=1, ord("banana")=2, ord("pear")=3
///
/// WARNING:
/// ord() 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.
///
///
[Serializable]
public class OrdFieldSource : ValueSource
{
private class AnonymousClassDocValues : DocValues
{
public AnonymousClassDocValues(int[] arr, OrdFieldSource enclosingInstance)
{
InitBlock(arr, enclosingInstance);
}
private void InitBlock(int[] arr, OrdFieldSource enclosingInstance)
{
this.arr = arr;
this.enclosingInstance = enclosingInstance;
}
private int[] arr;
private OrdFieldSource enclosingInstance;
public OrdFieldSource Enclosing_Instance
{
get
{
return enclosingInstance;
}
}
/*(non-Javadoc) @see Lucene.Net.Search.Function.DocValues#floatVal(int) */
public override float FloatVal(int doc)
{
return (float) arr[doc];
}
/*(non-Javadoc) @see Lucene.Net.Search.Function.DocValues#strVal(int) */
public override System.String StrVal(int doc)
{
// the string value of the ordinal, not the string itself
return System.Convert.ToString(arr[doc]);
}
/*(non-Javadoc) @see Lucene.Net.Search.Function.DocValues#toString(int) */
public override System.String ToString(int doc)
{
return Enclosing_Instance.Description() + '=' + IntVal(doc);
}
/*(non-Javadoc) @see Lucene.Net.Search.Function.DocValues#getInnerArray() */
public /*internal*/ override object GetInnerArray()
{
return arr;
}
}
protected internal System.String field;
///