org.hibernate.search.backend.configuration.impl.IndexWriterSetting Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-search-engine Show documentation
Show all versions of hibernate-search-engine Show documentation
Core of the Object/Lucene mapper, query engine and index management
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.search.backend.configuration.impl;
import java.io.Serializable;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.LogByteSizeMergePolicy;
import org.hibernate.search.util.configuration.impl.ConfigurationParseHelper;
import org.hibernate.search.util.logging.impl.Log;
import org.hibernate.search.util.logging.impl.LoggerFactory;
import java.lang.invoke.MethodHandles;
import org.hibernate.search.util.logging.impl.LoggerInfoStream;
/**
* Represents possible options to be applied to an
* {@code org.apache.lucene.index.IndexWriter}.
*
* @author Sanne Grinovero
*/
public enum IndexWriterSetting implements Serializable {
/**
* @see org.apache.lucene.index.IndexWriterConfig#setMaxBufferedDeleteTerms(int)
*/
MAX_BUFFERED_DELETE_TERMS( "max_buffered_delete_terms" ) {
@Override
public void applySetting(IndexWriterConfig writerConfig, int value) {
writerConfig.setMaxBufferedDeleteTerms( value );
}
},
/**
* @see org.apache.lucene.index.IndexWriterConfig#setMaxBufferedDocs(int)
*/
MAX_BUFFERED_DOCS( "max_buffered_docs" ) {
@Override
public void applySetting(IndexWriterConfig writerConfig, int value) {
writerConfig.setMaxBufferedDocs( value );
}
},
/**
* @see org.apache.lucene.index.LogByteSizeMergePolicy#setMaxMergeDocs(int)
*/
MAX_MERGE_DOCS( "max_merge_docs" ) {
@Override
public void applySetting(LogByteSizeMergePolicy logByteSizeMergePolicy, int value) {
logByteSizeMergePolicy.setMaxMergeDocs( value );
}
},
/**
* @see org.apache.lucene.index.LogByteSizeMergePolicy#setMergeFactor(int)
*/
MERGE_FACTOR( "merge_factor" ) {
@Override
public void applySetting(LogByteSizeMergePolicy logByteSizeMergePolicy, int value) {
logByteSizeMergePolicy.setMergeFactor( value );
}
},
/**
* @see org.apache.lucene.index.LogByteSizeMergePolicy#setMinMergeMB(double)
*/
MERGE_MIN_SIZE( "merge_min_size" ) {
@Override
public void applySetting(LogByteSizeMergePolicy logByteSizeMergePolicy, int value) {
logByteSizeMergePolicy.setMinMergeMB( value );
}
},
/**
* @see org.apache.lucene.index.LogByteSizeMergePolicy#setMaxMergeMB(double)
*/
MERGE_MAX_SIZE( "merge_max_size" ) {
@Override
public void applySetting(LogByteSizeMergePolicy logByteSizeMergePolicy, int value) {
logByteSizeMergePolicy.setMaxMergeMB( value );
}
},
/**
* @see org.apache.lucene.index.LogByteSizeMergePolicy#setMaxMergeMBForForcedMerge(double)
*/
MERGE_MAX_OPTIMIZE_SIZE( "merge_max_optimize_size" ) {
@Override
public void applySetting(LogByteSizeMergePolicy logByteSizeMergePolicy, int value) {
logByteSizeMergePolicy.setMaxMergeMBForForcedMerge( value );
}
},
/**
* @see org.apache.lucene.index.LogByteSizeMergePolicy#setCalibrateSizeByDeletes(boolean)
*/
MERGE_CALIBRATE_BY_DELETES( "merge_calibrate_by_deletes" ) {
@Override
public Integer parseVal(String value) {
return MERGE_CALIBRATE_BY_DELETES.parseBoolean( value );
}
@Override
public void applySetting(LogByteSizeMergePolicy logByteSizeMergePolicy, int value) {
boolean calibrateByDeletes = intToBoolean( value );
logByteSizeMergePolicy.setCalibrateSizeByDeletes( calibrateByDeletes );
}
},
/**
* @see org.apache.lucene.index.IndexWriterConfig#setRAMBufferSizeMB(double)
*/
RAM_BUFFER_SIZE( "ram_buffer_size" ) {
@Override
public void applySetting(IndexWriterConfig writerConfig, int value) {
writerConfig.setRAMBufferSizeMB( value );
}
},
@Deprecated
TERM_INDEX_INTERVAL( "term_index_interval" ) {
@Override
public void applySetting(IndexWriterConfig writerConfig, int value) {
log.deprecatedConfigurationPropertyIsIgnored( "term_index_interval" );
}
},
@Deprecated
MAX_THREAD_STATES( "max_thread_states" ) {
@Override
public void applySetting(IndexWriterConfig writerConfig, int value) {
log.deprecatedConfigurationPropertyIsIgnored( "max_thread_states" );
}
},
/**
* @see org.apache.lucene.index.IndexWriterConfig#setInfoStream(org.apache.lucene.util.InfoStream)
*/
INFOSTREAM( "infostream" ) {
@Override
public Integer parseVal(String value) {
return INFOSTREAM.parseBoolean( value );
}
@Override
public void applySetting(IndexWriterConfig writerConfig, int value) {
boolean enableInfoStream = intToBoolean( value );
if ( enableInfoStream ) {
writerConfig.setInfoStream( new LoggerInfoStream() );
}
}
};
private static final Integer TRUE = 1;
private static final Integer FALSE = 0;
private static final Log log = LoggerFactory.make( MethodHandles.lookup() );
private final String cfgKey;
IndexWriterSetting(String configurationKey) {
this.cfgKey = configurationKey;
}
/**
* @param writerConfig the {@link IndexWriterConfig}
* @param value the value for the configuration
* @throws IllegalArgumentException when user selects an invalid value; should be wrapped.
*/
public void applySetting(IndexWriterConfig writerConfig, int value) {
// nothing to do unless overriden
}
/**
* @param logByteSizeMergePolicy the {@link LogByteSizeMergePolicy}
* @param value the value for the configuration
* @throws IllegalArgumentException when user selects an invalid value; should be wrapped.
*/
public void applySetting(LogByteSizeMergePolicy logByteSizeMergePolicy, int value) {
// nothing to do unless overriden
}
/**
* @return The key used in configuration files to select an option.
*/
public String getKey() {
return cfgKey;
}
/**
* Specific parameters may override to provide additional keywords support.
*
* @param value the string value as in configuration file
* @return the integer value going to be set as parameter
* @throws org.hibernate.search.exception.SearchException for unrecognized values
*/
public Integer parseVal(String value) {
return ConfigurationParseHelper.parseInt(
value,
"Invalid value for " + cfgKey + ": " + value
);
}
private Integer parseBoolean(String value) {
boolean v = ConfigurationParseHelper.parseBoolean(
value,
"Invalid value for " + cfgKey + ": " + value
);
return v ? TRUE : FALSE;
}
private static boolean intToBoolean(int value) {
return value == TRUE;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy