FirteX-高性能全文索引和检索平台API Documentation |
00001 // 00002 // Copyright(C) 2005--2006 Institute of Computing Tech, Chinese Academy of Sciences. 00003 // All rights reserved. 00004 // This file is part of FirteX (www.firtex.org) 00005 // 00006 // Use of the FirteX is subject to the terms of the software license set forth in 00007 // the LICENSE file included with this software, and also available at 00008 // http://www.firtex.org/license.html 00009 // 00010 // Author : 郭瑞杰(GuoRuijie) 00011 // Email : ruijieguo@software.ict.ac.cn 00012 // Created : 2006/7/3 00013 // 00014 #ifndef __TERMVECTORREADER_H 00015 #define __TERMVECTORREADER_H 00016 00017 #if _MSC_VER > 1000 00018 #pragma once 00019 #endif // _MSC_VER > 1000 00020 00021 #include "../utility/StdHeader.h" 00022 #include "TermFreqVector.h" 00023 #include "TermPositionVector.h" 00024 #include "TermSequenceVector.h" 00025 #include "../store/Directory.h" 00026 #include "FieldsInfo.h" 00027 #include "../store/IndexInput.h" 00028 00029 using namespace firtex::store; 00030 00031 namespace firtex 00032 { 00033 namespace index 00034 { 00035 template <class TermVectorPtrT> 00036 class CTermVectorArray 00037 { 00038 public: 00039 CTermVectorArray(vector<TermVectorPtrT>* freqVectors) 00040 { 00041 m_numFields = freqVectors->size(); 00042 m_ppTermVectors = new TermVectorPtrT[m_numFields]; 00043 for (size_t i = 0;i < m_numFields;i++) 00044 { 00045 m_ppTermVectors[i] = (*freqVectors)[i]; 00046 } 00047 } 00048 ~CTermVectorArray() 00049 { 00050 for(count_t i = 0;i<m_numFields;i++) 00051 { 00052 delete m_ppTermVectors[i]; 00053 } 00054 delete[] m_ppTermVectors; 00055 m_ppTermVectors = NULL; 00056 } 00057 public: 00058 size_t numFields(){return m_numFields;} 00059 TermVectorPtrT operator[](size_t order) 00060 { 00061 assert(order >=0 && order < m_numFields); 00062 return m_ppTermVectors[order]; 00063 } 00064 TermVectorPtrT operator[](const tchar* field) 00065 { 00066 for(count_t i = 0;i<m_numFields;i++) 00067 { 00068 if(m_ppTermVectors[i]) 00069 { 00070 if(!_tcscmp(m_ppTermVectors[i]->getField(),field)) 00071 return m_ppTermVectors[i]; 00072 } 00073 } 00074 return NULL; 00075 } 00076 private: 00077 TermVectorPtrT* m_ppTermVectors; 00078 size_t m_numFields; 00079 }; 00080 00081 class CTermVectorReader 00082 { 00083 public: 00084 CTermVectorReader(); 00085 CTermVectorReader(CDirectory* pDirectory,CFieldsInfo* pFieldsInfo); 00086 virtual ~CTermVectorReader(void); 00087 public: 00093 virtual void open(const tchar* barrelName); 00094 00098 virtual void close(); 00099 00103 virtual TermVector_ getTermVectorType(const tchar* field); 00104 00112 virtual CTermFreqVector* getFreqVector(docid_t did,const tchar* field); 00113 00120 virtual CTermVectorArray<CTermFreqVector*>* getFreqVectors(docid_t did); 00121 00129 virtual CTermPositionVector* getPositionVector(docid_t did,const tchar* field); 00130 00137 virtual CTermVectorArray<CTermPositionVector*>* getPositionVectors(docid_t did); 00138 00146 virtual CTermSequenceVector* getSquenceVector(docid_t did,const tchar* field); 00147 00154 virtual CTermVectorArray<CTermSequenceVector*>* getSquenceVectors(docid_t did); 00155 private: 00156 CDirectory* m_pDirectory; 00157 CFieldsInfo* m_pFieldsInfo; 00158 CIndexInput* m_pTVIInput; 00159 CIndexInput* m_pTVDInput; 00160 CIndexInput* m_pTVVInput; 00161 }; 00162 } 00163 } 00164 00165 #endif
http://www.firtex.org http://www.sourceforge.net/projects/firtex