00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _CQPARALLEL
00027 #define _CQPARALLEL
00028 #include "libMRML/include/uses-declarations.h"
00029 #include "libMRML/include/CQuery.h"
00030 #include "libMRML/include/CSelfDestroyPointer.h"
00031
00051 #include <memory>
00052 #include <map>
00053 #include <list>
00054 #include "libMRML/include/CSelfDestroyPointer.h"
00055 #include "libMRML/include/CIDRelevanceLevelPairList.h"
00056 #include "libMRML/include/CRelevanceLevelList.h"
00057
00058
00059
00060
00061 #include "libMRML/include/CAlgorithm.h"
00062 #include "libMRML/include/CAccessor.h"
00063 #include "libMRML/include/CAccessorAdminCollection.h"
00064 #include "libMRML/include/CAccessorAdmin.h"
00065
00066
00067 class CScoreBoard;
00068 class CAccessor;
00069
00070
00094 class CQParallel:public CQuery{
00095
00099 CAccessorAdminCollection& mAccessorAdminCollection;
00100
00102 class lCLocalAccessor{
00103 public:
00105 CAccessor* mAccessor;
00107 CAccessorAdmin* mAccessorAdmin;
00109 list<lCChildren::iterator> mUsedBy;
00111 CSelfDestroyPointer<map<TID,double> > mUnifiedResults;
00113 double mWeightedSum;
00116 lCLocalAccessor();
00120 ~lCLocalAccessor();
00121 };
00122
00123
00138 class lCLocalAccessorMap:public map<string,lCLocalAccessor>{
00139 public:
00140 };
00143 lCLocalAccessorMap mAccessors;
00144
00145
00146 protected:
00152 virtual void init();
00153
00154 public:
00160 ~CQParallel();
00165 CQParallel(CAccessorAdminCollection& inAccessorAdminCollection,
00166 CAlgorithm& inAlgorithm);
00167
00176 virtual CXMLElement* query(const CXMLElement& inQuery,
00177 int inNumberOfInterestingImages,
00178 double inDifferenceToBest);
00179
00191 virtual CIDRelevanceLevelPairList* fastQuery(const CXMLElement& inQuery,
00192 int inNumberOfInterestingImages,
00193 double inDifferenceToBest);
00194
00200 virtual CXMLElement* getRandomImages(int inNumberOfInterestingImages)const;
00206 virtual list<TID>* getAllIDs()const;
00212 virtual list<string>* getAllURLs()const;
00218 virtual list<pair<TID,string> >* getAllIDURLPairs()const;
00219
00226 virtual bool setAlgorithm(CAlgorithm& inAlgorithm);
00227
00239 void finishInit();
00240
00241 };
00242
00243 #endif
00244
00245
00246