blob: 25df292e1cc234667caa7442de48de4817d4d5d1 [file] [log] [blame]
/*------------------------------------------------------------------------------
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
*
* Distributable under the terms of either the Apache License (Version 2.0) or
* the GNU Lesser General Public License, as specified in the COPYING file.
------------------------------------------------------------------------------*/
#ifndef _lucene_search_FieldDoc_
#define _lucene_search_FieldDoc_
#if defined(_LUCENE_PRAGMA_ONCE)
# pragma once
#endif
#include "ScoreDoc.h"
CL_NS_DEF(search)
/**
* Expert: A ScoreDoc which also contains information about
* how to sort the referenced document. In addition to the
* document number and score, this object contains an array
* of values for the document from the field(s) used to sort.
* For example, if the sort criteria was to sort by fields
* "a", "b" then "c", the <code>fields</code> object array
* will have three elements, corresponding respectively to
* the term values for the document in fields "a", "b" and "c".
* The class of each element in the array will be either
* Integer, Float or String depending on the type of values
* in the terms of each field.
*
* @see ScoreDoc
* @see TopFieldDocs
*/
class FieldDoc: public ScoreDoc {
public:
/** Expert: The values which are used to sort the referenced document.
* The order of these will match the original sort criteria given by a
* Sort object. Each Object will be either an Integer, Float or String,
* depending on the type of values in the terms of the original field.
* @see Sort
* @see Searchable#search(Query,Filter,int32_t,Sort)
*/
CL_NS(util)::Comparable** fields;
/** Expert: Creates one of these objects with empty sort information. */
FieldDoc (int32_t doc, qreal score):
ScoreDoc(doc,score) {
fields=NULL;
}
/** Expert: Creates one of these objects with the given sort information. */
FieldDoc (int32_t doc, qreal score, CL_NS(util)::Comparable** fields):
ScoreDoc(doc,score)
{
this->fields = fields;
}
~FieldDoc(){
if ( fields != NULL ){
for ( int i=0;fields[i]!=NULL;i++ )
_CLDELETE(fields[i]);
_CLDELETE_ARRAY(fields);
}
}
};
CL_NS_END
#endif