/*------------------------------------------------------------------------------ * 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 fields 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, float_t score): ScoreDoc(doc,score) { fields=NULL; } /** Expert: Creates one of these objects with the given sort information. */ FieldDoc (int32_t doc, float_t 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