Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

StructQueryRetMethod.hpp

Go to the documentation of this file.
00001 /*==========================================================================
00002  * Copyright (c) 2002 University of Massachusetts.  All Rights Reserved.
00003  *
00004  * Use of the Lemur Toolkit for Language Modeling and Information Retrieval
00005  * is subject to the terms of the software license set forth in the LICENSE
00006  * file included with this software, and also available at
00007  * http://www.cs.cmu.edu/~lemur/license.html
00008  *
00009  *==========================================================================
00010 */
00011 /*
00012   Author: fff
00013  */
00014 
00015 
00016 #ifndef _STRUCTQUERYRETMETHOD_HPP
00017 #define _STRUCTQUERYRETMETHOD_HPP
00018 
00019 #include "RetrievalMethod.hpp"
00020 #include "StructQueryRep.hpp"
00021 #include "DocumentRep.hpp"
00022 #include "ScoreFunction.hpp"
00023 #include "ScoreAccumulator.hpp"
00024 #include "FreqVector.hpp"
00025 
00026 
00027 //--------------------------------------------------------------------------
00028 //      Abstract Interface for A Retrieval Method/Model for Structured Query
00029 //--------------------------------------------------------------------------
00030 
00049 class StructQueryRetMethod : public RetrievalMethod {
00050 public:
00051   StructQueryRetMethod(Index &ind) : RetrievalMethod(ind) {}
00052   virtual ~StructQueryRetMethod() {}
00054   //(caller responsible for deleting the memory of the generated new instance)
00055   virtual StructQueryRep *computeStructQueryRep(StructQuery &qry) = 0;
00056 
00058   virtual QueryRep *computeQueryRep(Query &qry); 
00060   virtual double scoreDoc(QueryRep &qry, int docID);
00062   virtual void scoreCollection(QueryRep &qry, IndexedRealVector &results);
00063 
00066   virtual DocumentRep *computeDocRep(int docID) = 0;
00068   virtual ScoreFunction *scoreFunc() = 0;
00070   virtual void updateQuery(QueryRep &qryRep, DocIDSet &relDocs) {
00071     updateStructQuery(*((StructQueryRep *)(&qryRep)), relDocs);
00072   }
00073 
00076   virtual void updateStructQuery(StructQueryRep &qryRep, 
00077                                  DocIDSet &relDocs) = 0;
00078 
00080   virtual void scoreInvertedIndex(QueryRep &qryRep, 
00081                                   IndexedRealVector &scores, 
00082                                   bool scoreAll=false);
00083 };
00084 
00086 class StructQueryScoreFunc : public ScoreFunction {
00087 public:
00089   virtual double evalQuery(QueryNode *qn, DocumentRep *dRep) {
00090     return qn->eval(dRep);
00091   }
00093   virtual double adjustedScore(double w, QueryNode *qn) {
00094     return w;
00095   }  
00096 };
00097 
00098 //=============== inlines ========================================
00099 
00100 inline QueryRep *StructQueryRetMethod::computeQueryRep(Query &qry) { 
00101   StructQuery *q = static_cast<StructQuery *>(&qry);
00102   return (computeStructQueryRep(*q));
00103 }
00104 
00105 #endif /* _STRUCTQUERYRETMETHOD_HPP */
00106 
00107 
00108 
00109 

Generated on Fri Feb 6 07:11:49 2004 for LEMUR by doxygen1.2.16