Lucene++ - a full-featured, c++ search engine
API Documentation


LogMergePolicy.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2014 Alan Wright. All rights reserved.
3 // Distributable under the terms of either the Apache License (Version 2.0)
4 // or the GNU Lesser General Public License.
6 
7 #ifndef LOGMERGEPOLICY_H
8 #define LOGMERGEPOLICY_H
9 
10 #include "MergePolicy.h"
11 
12 namespace Lucene {
13 
24 class LPPAPI LogMergePolicy : public MergePolicy {
25 public:
26  LogMergePolicy(const IndexWriterPtr& writer);
27  virtual ~LogMergePolicy();
28 
30 
31 protected:
32  int32_t mergeFactor;
33 
34  double noCFSRatio;
35 
39 
40 public:
43  static const double LEVEL_LOG_SPAN;
44 
46  static const int32_t DEFAULT_MERGE_FACTOR;
47 
50  static const int32_t DEFAULT_MAX_MERGE_DOCS;
51 
54  static const double DEFAULT_NO_CFS_RATIO;
55 
56  int64_t minMergeSize;
57  int64_t maxMergeSize;
58  int32_t maxMergeDocs;
59 
60 public:
62  double getNoCFSRatio();
63 
66  void setNoCFSRatio(double noCFSRatio);
67 
70  int32_t getMergeFactor();
71 
77  void setMergeFactor(int32_t mergeFactor);
78 
80  virtual bool useCompoundFile(const SegmentInfosPtr& segments, const SegmentInfoPtr& newSegment);
81 
83  void setUseCompoundFile(bool useCompoundFile);
84 
87  bool getUseCompoundFile();
88 
90  virtual bool useCompoundDocStore(const SegmentInfosPtr& segments);
91 
94  void setUseCompoundDocStore(bool useCompoundDocStore);
95 
98  bool getUseCompoundDocStore();
99 
102  void setCalibrateSizeByDeletes(bool calibrateSizeByDeletes);
103 
106  bool getCalibrateSizeByDeletes();
107 
109  virtual void close();
110 
115  virtual MergeSpecificationPtr findMergesForOptimize(const SegmentInfosPtr& segmentInfos, int32_t maxSegmentCount, SetSegmentInfo segmentsToOptimize);
116 
119  virtual MergeSpecificationPtr findMergesToExpungeDeletes(const SegmentInfosPtr& segmentInfos);
120 
125  virtual MergeSpecificationPtr findMerges(const SegmentInfosPtr& segmentInfos);
126 
135  void setMaxMergeDocs(int32_t maxMergeDocs);
136 
139  int32_t getMaxMergeDocs();
140 
141 protected:
142  bool verbose();
143  void message(const String& message);
144 
145  virtual int64_t size(const SegmentInfoPtr& info) = 0;
146 
147  int64_t sizeDocs(const SegmentInfoPtr& info);
148  int64_t sizeBytes(const SegmentInfoPtr& info);
149 
150  bool isOptimized(const SegmentInfosPtr& infos, int32_t maxNumSegments, SetSegmentInfo segmentsToOptimize);
151 
154  bool isOptimized(const SegmentInfoPtr& info);
155 
156  OneMergePtr makeOneMerge(const SegmentInfosPtr& infos, const SegmentInfosPtr& infosToMerge);
157 };
158 
159 }
160 
161 #endif
Lucene::MergePolicy
A MergePolicy determines the sequence of primitive merge operations to be used for overall merge and ...
Definition: MergePolicy.h:32
Lucene::LogMergePolicy::DEFAULT_MAX_MERGE_DOCS
static const int32_t DEFAULT_MAX_MERGE_DOCS
Default maximum segment size. A segment of this size or larger will never be merged.
Definition: LogMergePolicy.h:50
Lucene::LogMergePolicy::calibrateSizeByDeletes
bool calibrateSizeByDeletes
Definition: LogMergePolicy.h:36
Lucene::LogMergePolicy::DEFAULT_MERGE_FACTOR
static const int32_t DEFAULT_MERGE_FACTOR
Default merge factor, which is how many segments are merged at a time.
Definition: LogMergePolicy.h:46
LUCENE_CLASS
#define LUCENE_CLASS(Name)
Definition: LuceneObject.h:24
Lucene::OneMergePtr
boost::shared_ptr< OneMerge > OneMergePtr
Definition: LuceneTypes.h:192
Lucene::LogMergePolicy::maxMergeDocs
int32_t maxMergeDocs
Definition: LogMergePolicy.h:58
Lucene::SegmentInfoPtr
boost::shared_ptr< SegmentInfo > SegmentInfoPtr
Definition: LuceneTypes.h:208
Lucene::LogMergePolicy::maxMergeSize
int64_t maxMergeSize
Definition: LogMergePolicy.h:57
Lucene::LogMergePolicy::noCFSRatio
double noCFSRatio
Definition: LogMergePolicy.h:34
Lucene::LogMergePolicy::LEVEL_LOG_SPAN
static const double LEVEL_LOG_SPAN
Defines the allowed range of log(size) for each level. A level is computed by taking the max segment ...
Definition: LogMergePolicy.h:43
Lucene
Definition: AbstractAllTermDocs.h:12
Lucene::LogMergePolicy
This class implements a MergePolicy that tries to merge segments into levels of exponentially increas...
Definition: LogMergePolicy.h:24
Lucene::LogMergePolicy::minMergeSize
int64_t minMergeSize
Definition: LogMergePolicy.h:56
MergePolicy.h
Lucene::MergeSpecificationPtr
boost::shared_ptr< MergeSpecification > MergeSpecificationPtr
Definition: LuceneTypes.h:176
Lucene::SegmentInfosPtr
boost::shared_ptr< SegmentInfos > SegmentInfosPtr
Definition: LuceneTypes.h:210
Lucene::LogMergePolicy::_useCompoundFile
bool _useCompoundFile
Definition: LogMergePolicy.h:37
Lucene::IndexWriterPtr
boost::shared_ptr< IndexWriter > IndexWriterPtr
Definition: LuceneTypes.h:160
Lucene::LogMergePolicy::_useCompoundDocStore
bool _useCompoundDocStore
Definition: LogMergePolicy.h:38
Lucene::LogMergePolicy::DEFAULT_NO_CFS_RATIO
static const double DEFAULT_NO_CFS_RATIO
Default noCFSRatio. If a merge's size is >= 10% of the index, then we disable compound file for it.
Definition: LogMergePolicy.h:54

clucene.sourceforge.net