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
29 LUCENE_CLASS(LogMergePolicy);
30
31 protected:
32 int32_t mergeFactor;
33
34 double noCFSRatio;
35
36 bool calibrateSizeByDeletes;
37 bool _useCompoundFile;
38 bool _useCompoundDocStore;
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