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


Loading...
Searching...
No Matches
SegmentMerger.h
Go to the documentation of this file.
1
2// 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 SEGMENTMERGER_H
8#define SEGMENTMERGER_H
9
10#include "LuceneObject.h"
11
12namespace Lucene {
13
20class LPPAPI SegmentMerger : public LuceneObject {
21public:
22 SegmentMerger(const DirectoryPtr& dir, const String& name);
23 SegmentMerger(const IndexWriterPtr& writer, const String& name, const OneMergePtr& merge);
24 virtual ~SegmentMerger();
25
27
28protected:
30 String segment;
32
35
36 int32_t mergedDocs;
38
42
44 static const int32_t MAX_RAW_MERGE_DOCS;
45
49
52
53 ByteArray payloadBuffer;
56
57public:
59 static const uint8_t NORMS_HEADER[];
60 static const int32_t NORMS_HEADER_LENGTH;
61
62public:
63 bool hasProx();
64
66 void add(const IndexReaderPtr& reader);
67
71
74 int32_t merge();
75
79 int32_t merge(bool mergeDocStores);
80
83
85 HashSet<String> createCompoundFile(const String& fileName);
86
88 int32_t mergeFields();
89
92
93protected:
94 void addIndexed(const IndexReaderPtr& reader, const FieldInfosPtr& fInfos, HashSet<String> names, bool storeTermVectors,
95 bool storePositionWithTermVector, bool storeOffsetWithTermVector, bool storePayloads,
96 bool omitTFAndPositions);
97
99 int32_t copyFieldsWithDeletions(const FieldsWriterPtr& fieldsWriter, const IndexReaderPtr& reader, const FieldsReaderPtr& matchingFieldsReader);
100 int32_t copyFieldsNoDeletions(const FieldsWriterPtr& fieldsWriter, const IndexReaderPtr& reader, const FieldsReaderPtr& matchingFieldsReader);
101
104
105 void copyVectorsWithDeletions(const TermVectorsWriterPtr& termVectorsWriter, const TermVectorsReaderPtr& matchingVectorsReader, const IndexReaderPtr& reader);
106 void copyVectorsNoDeletions(const TermVectorsWriterPtr& termVectorsWriter, const TermVectorsReaderPtr& matchingVectorsReader, const IndexReaderPtr& reader);
107
109
111
118
120};
121
122class CheckAbort : public LuceneObject {
123public:
125 virtual ~CheckAbort();
126
128
129protected:
130 double workCount;
133
134public:
138 virtual void work(double units);
139};
140
142public:
145
147
148public:
150 virtual void work(double units);
151};
152
153}
154
155#endif
#define LUCENE_CLASS(Name)
Definition LuceneObject.h:24
Definition SegmentMerger.h:141
virtual void work(double units)
do nothing
Definition SegmentMerger.h:122
DirectoryWeakPtr _dir
Definition SegmentMerger.h:132
double workCount
Definition SegmentMerger.h:130
OneMergePtr merge
Definition SegmentMerger.h:131
virtual void work(double units)
Records the fact that roughly units amount of work have been done since this method was last called....
virtual ~CheckAbort()
CheckAbort(const OneMergePtr &merge, const DirectoryPtr &dir)
Utility template class to handle collections that can be safely copied and shared.
Definition Collection.h:17
Utility template class to handle hash set collections that can be safely copied and shared.
Definition HashSet.h:17
Base class for all Lucene classes.
Definition LuceneObject.h:31
The SegmentMerger class combines two or more Segments, represented by an IndexReader (add,...
Definition SegmentMerger.h:20
void copyVectorsWithDeletions(const TermVectorsWriterPtr &termVectorsWriter, const TermVectorsReaderPtr &matchingVectorsReader, const IndexReaderPtr &reader)
void closeReaders()
close all IndexReaders that have been added. Should not be called before merge().
Collection< int32_t > getDelCounts()
Collection< SegmentReaderPtr > matchingSegmentReaders
Definition SegmentMerger.h:46
static const int32_t NORMS_HEADER_LENGTH
Definition SegmentMerger.h:60
Collection< Collection< int32_t > > getDocMaps()
DirectoryPtr directory
Definition SegmentMerger.h:29
Collection< int32_t > rawDocLengths2
Definition SegmentMerger.h:48
bool mergeDocStores
Whether we should merge doc stores (stored fields and vectors files). When all segments we are mergin...
Definition SegmentMerger.h:41
void setMatchingSegmentReaders()
void add(const IndexReaderPtr &reader)
Add an IndexReader to the collection of readers that are to be merged.
int32_t merge(bool mergeDocStores)
Merges the readers specified by the add method into the directory passed to the constructor.
void mergeTermInfos(const FormatPostingsFieldsConsumerPtr &consumer)
int32_t merge()
Merges the readers specified by the add method into the directory passed to the constructor.
int32_t copyFieldsNoDeletions(const FieldsWriterPtr &fieldsWriter, const IndexReaderPtr &reader, const FieldsReaderPtr &matchingFieldsReader)
IndexReaderPtr segmentReader(int32_t i)
bool omitTermFreqAndPositions
Definition SegmentMerger.h:51
int32_t termIndexInterval
Definition SegmentMerger.h:31
void copyVectorsNoDeletions(const TermVectorsWriterPtr &termVectorsWriter, const TermVectorsReaderPtr &matchingVectorsReader, const IndexReaderPtr &reader)
int32_t copyFieldsWithDeletions(const FieldsWriterPtr &fieldsWriter, const IndexReaderPtr &reader, const FieldsReaderPtr &matchingFieldsReader)
static const int32_t MAX_RAW_MERGE_DOCS
Maximum number of contiguous documents to bulk-copy when merging stored fields.
Definition SegmentMerger.h:44
SegmentMerger(const DirectoryPtr &dir, const String &name)
CheckAbortPtr checkAbort
Definition SegmentMerger.h:37
void addIndexed(const IndexReaderPtr &reader, const FieldInfosPtr &fInfos, HashSet< String > names, bool storeTermVectors, bool storePositionWithTermVector, bool storeOffsetWithTermVector, bool storePayloads, bool omitTFAndPositions)
Collection< int32_t > rawDocLengths
Definition SegmentMerger.h:47
SegmentMerger(const IndexWriterPtr &writer, const String &name, const OneMergePtr &merge)
Collection< Collection< int32_t > > docMaps
Definition SegmentMerger.h:54
SegmentMergeQueuePtr queue
Definition SegmentMerger.h:50
int32_t appendPostings(const FormatPostingsTermsConsumerPtr &termsConsumer, Collection< SegmentMergeInfoPtr > smis, int32_t n)
Process postings from multiple segments all positioned on the same term. Writes out merged entries in...
Collection< IndexReaderPtr > readers
Definition SegmentMerger.h:33
ByteArray payloadBuffer
Definition SegmentMerger.h:53
Collection< int32_t > delCounts
Definition SegmentMerger.h:55
HashSet< String > getMergedFiles()
int32_t mergedDocs
Definition SegmentMerger.h:36
void mergeVectors()
Merge the TermVectors from each of the segments into the new one.
HashSet< String > createCompoundFile(const String &fileName)
String segment
Definition SegmentMerger.h:30
FieldInfosPtr fieldInfos
Definition SegmentMerger.h:34
Definition AbstractAllTermDocs.h:12
boost::weak_ptr< Directory > DirectoryWeakPtr
Definition LuceneTypes.h:489
boost::shared_ptr< TermVectorsWriter > TermVectorsWriterPtr
Definition LuceneTypes.h:263
boost::shared_ptr< FieldInfos > FieldInfosPtr
Definition LuceneTypes.h:127
boost::shared_ptr< FormatPostingsTermsConsumer > FormatPostingsTermsConsumerPtr
Definition LuceneTypes.h:145
boost::shared_ptr< OneMerge > OneMergePtr
Definition LuceneTypes.h:192
boost::shared_ptr< FormatPostingsFieldsConsumer > FormatPostingsFieldsConsumerPtr
Definition LuceneTypes.h:141
boost::shared_ptr< TermVectorsReader > TermVectorsReaderPtr
Definition LuceneTypes.h:256
boost::shared_ptr< Directory > DirectoryPtr
Definition LuceneTypes.h:489
boost::shared_ptr< CheckAbort > CheckAbortPtr
Definition LuceneTypes.h:94
boost::shared_ptr< IndexReader > IndexReaderPtr
Definition LuceneTypes.h:157
boost::shared_ptr< FieldsReader > FieldsReaderPtr
Definition LuceneTypes.h:131
boost::shared_ptr< FieldsWriter > FieldsWriterPtr
Definition LuceneTypes.h:133
boost::shared_ptr< SegmentMergeQueue > SegmentMergeQueuePtr
Definition LuceneTypes.h:213
boost::shared_ptr< IndexWriter > IndexWriterPtr
Definition LuceneTypes.h:160

clucene.sourceforge.net