/**
* Amanuensis, a distributed Lucene Index Writer for Infinispan
*
* Copyright (c) 2011, Tristan Tarrant
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package net.dataforte.infinispan.amanuensis;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.LogByteSizeMergePolicy;
import org.apache.lucene.index.LogMergePolicy;
public class DefaultWriterConfigurator implements WriterConfigurator {
double maxMergeMB = 8;
double minMergeMB = 8;
private int maxMergeDocs = LogMergePolicy.DEFAULT_MAX_MERGE_DOCS;
private int mergeFactor = LogMergePolicy.DEFAULT_MERGE_FACTOR;
private boolean calibrateSizeByDeletes = true;
private double noCFSRatio = LogMergePolicy.DEFAULT_NO_CFS_RATIO;
private boolean useCompoundDocStore = true;
private boolean useCompoundFile = true;
public double getMaxMergeMB() {
return maxMergeMB;
}
public void setMaxMergeMB(double maxMergeMB) {
this.maxMergeMB = maxMergeMB;
}
public double getMinMergeMB() {
return minMergeMB;
}
public void setMinMergeMB(double minMergeMB) {
this.minMergeMB = minMergeMB;
}
public int getMaxMergeDocs() {
return maxMergeDocs;
}
public void setMaxMergeDocs(int maxMergeDocs) {
this.maxMergeDocs = maxMergeDocs;
}
public int getMergeFactor() {
return mergeFactor;
}
public void setMergeFactor(int mergeFactor) {
this.mergeFactor = mergeFactor;
}
public boolean isCalibrateSizeByDeletes() {
return calibrateSizeByDeletes;
}
public void setCalibrateSizeByDeletes(boolean calibrateSizeByDeletes) {
this.calibrateSizeByDeletes = calibrateSizeByDeletes;
}
public double getNoCFSRatio() {
return noCFSRatio;
}
public void setNoCFSRatio(double noCFSRatio) {
this.noCFSRatio = noCFSRatio;
}
public boolean isUseCompoundDocStore() {
return useCompoundDocStore;
}
public void setUseCompoundDocStore(boolean useCompoundDocStore) {
this.useCompoundDocStore = useCompoundDocStore;
}
public boolean isUseCompoundFile() {
return useCompoundFile;
}
public void setUseCompoundFile(boolean useCompoundFile) {
this.useCompoundFile = useCompoundFile;
}
@Override
public void configure(IndexWriter writer) {
LogByteSizeMergePolicy mergePolicy = new LogByteSizeMergePolicy(writer);
mergePolicy.setMaxMergeMB(maxMergeMB);
mergePolicy.setMinMergeMB(minMergeMB);
mergePolicy.setMaxMergeDocs(maxMergeDocs);
mergePolicy.setMergeFactor(mergeFactor);
mergePolicy.setCalibrateSizeByDeletes(calibrateSizeByDeletes);
mergePolicy.setNoCFSRatio(noCFSRatio);
mergePolicy.setUseCompoundDocStore(useCompoundDocStore);
mergePolicy.setUseCompoundFile(useCompoundFile);
writer.setMergePolicy(mergePolicy);
}
}