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. 5 ///////////////////////////////////////////////////////////////////////////// 6 7 #ifndef NORMSWRITER_H 8 #define NORMSWRITER_H 9 10 #include "InvertedDocEndConsumer.h" 11 12 namespace Lucene { 13 14 /// Writes norms. Each thread X field accumulates the norms for the doc/fields it saw, then the flush method 15 /// below merges all of these together into a single _X.nrm file. 16 class NormsWriter : public InvertedDocEndConsumer { 17 public: 18 NormsWriter(); 19 virtual ~NormsWriter(); 20 21 LUCENE_CLASS(NormsWriter); 22 23 protected: 24 FieldInfosPtr fieldInfos; 25 26 public: 27 virtual InvertedDocEndConsumerPerThreadPtr addThread(const DocInverterPerThreadPtr& docInverterPerThread); 28 virtual void abort(); 29 30 // We only write the _X.nrm file at flush 31 virtual void files(HashSet<String> files); 32 33 virtual void setFieldInfos(const FieldInfosPtr& fieldInfos); 34 35 /// Produce _X.nrm if any document had a field with norms not disabled 36 virtual void flush(MapInvertedDocEndConsumerPerThreadCollectionInvertedDocEndConsumerPerField threadsAndFields, const SegmentWriteStatePtr& state); 37 virtual void closeDocStore(const SegmentWriteStatePtr& state); 38 39 protected: 40 static uint8_t getDefaultNorm(); 41 }; 42 43 } 44 45 #endif 46