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

API Documentation


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

MultiTermReader.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/1/4
00013 //
00014 #ifndef _MULTITERMSEARCHER_H
00015 #define _MULTITERMSEARCHER_H
00016 
00017 #include "TermReader.h"
00018 #include "BarrelsInfo.h"
00019 
00020 #include <map>
00021 #include <vector>
00022 using namespace std;
00023 
00024 namespace firtex
00025 {
00026         namespace index
00027         {               
00028                 class CReaderCache
00029                 {
00030                 public:
00031                         CReaderCache()
00032                         {
00033                                 m_reader = NULL;
00034                                 m_next = NULL;
00035                         }
00036                         CReaderCache(CBarrelInfo* barrelInfo,CTermReader* pSe)
00037                         {
00038                                 m_barrelInfo = barrelInfo;
00039                                 m_reader = pSe;
00040                                 m_next = NULL;
00041                         }
00042                         ~CReaderCache()
00043                         {
00044                                 m_barrelInfo = NULL;
00045                                 m_reader = NULL;
00046                                 delete m_next;
00047                                 m_next = NULL;
00048                         }
00049                 protected:
00050                         CBarrelInfo*    m_barrelInfo;
00051                         CTermReader*    m_reader;
00052                         CReaderCache*   m_next;
00053                         friend class CMultiTermReader;
00054                 };
00055 
00056                 class CMultiIndexBarrelReader;
00057                 class CMultiTermReader :        public CTermReader
00058                 {
00059                 public:
00060                         CMultiTermReader(void);
00061                         CMultiTermReader(CMultiIndexBarrelReader* pBarrelReader);
00062                         virtual ~CMultiTermReader(void);
00063                 public:
00064                         void                    open(CDirectory* pDirectory,const tchar* barrelname,CFieldInfo* pFieldInfo,CBitVector* deletedDocs);
00065 
00073                         CTermIterator*  termIterator(CTerm* pLowerTerm,CTerm* pUpperTerm);
00074 
00081                         CTermIterator*  termIterator(const tchar* field);
00082 
00087                         bool                    seek(CTerm* term);
00088 
00093                         CTermDocs*              termDocs();
00094 
00099                         CTermPositions* termPositions();
00100 
00104                         freq_t                  docFreq(CTerm* term);
00105 
00109                         void                    close();                        
00110                 protected:
00114                         void                    loadBarrels();
00115 
00119                         CReaderCache*   loadReader(const tchar* field); 
00120                         
00121                 protected:
00122                         CMultiIndexBarrelReader*        m_pBarrelReader;
00123                         CReaderCache*                           m_pCurReader;
00124 
00125                         map<tstring,CReaderCache*>      m_ReaderCache;  //搜索器Cache
00126                 };
00127         }
00128 }
00129 
00130 #endif

http://www.firtex.org http://www.sourceforge.net/projects/firtex