FirteX-高性能全文索引和检索平台

API Documentation


首页 | 名字空间列表 | 类继承关系 | 组合类型列表 | $(BL\录(B | 文件列表 | 名字空间成员 | 组合类型成员 | 文件成员

TermVectorReader.h

浏览该文件的文档。
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