Skip to content

Commit

Permalink
Introduce properties for index writer configuration to be able to dyn…
Browse files Browse the repository at this point in the history
…amically adapt them.
  • Loading branch information
MishaDemianenko committed Dec 5, 2015
1 parent 7d2d221 commit 2d5a4ff
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 4 deletions.
19 changes: 19 additions & 0 deletions community/kernel/src/main/java/org/neo4j/helpers/Settings.java
Expand Up @@ -19,6 +19,8 @@
*/
package org.neo4j.helpers;

import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
Expand Down Expand Up @@ -830,6 +832,23 @@ public String apply( Function<String, String> settings )
};
}

public static double getDouble(String propertyName, double defaultValue)
{
try
{
String property = System.getProperty( propertyName );
if ( StringUtils.isNotEmpty( property ) )
{
return Double.parseDouble( property );
}
}
catch ( Exception e )
{
}
return defaultValue;
}


private Settings()
{
}
Expand Down
Expand Up @@ -22,11 +22,22 @@
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.LogByteSizeMergePolicy;

import org.neo4j.helpers.Settings;
import org.neo4j.index.impl.lucene.LuceneDataSource;
import org.neo4j.index.impl.lucene.MultipleBackupDeletionPolicy;

public final class IndexWriterFactories
{

private static final int MAX_BUFFERED_DOCS =
Integer.getInteger( "org.neo4j.lucene.writer.max_buffered_docs", 100000 );
private static final int MERGE_POLICY_MERGE_FACTOR =
Integer.getInteger( "org.neo4j.lucene.merge.policy.factor", 2 );
private static final double MERGE_POLICY_NO_CFS_RATIO =
Settings.getDouble( "org.neo4j.lucene.merge.policy.nocfs.ratio.", 1.0 );
private static final double MERGE_POLICY_MIN_MERGE_MB =
Settings.getDouble( "org.neo4j.lucene.merge.policy.min.merge", 0.1 );

private IndexWriterFactories()
{
throw new AssertionError( "Not for instantiation!" );
Expand All @@ -51,15 +62,15 @@ private static IndexWriterConfig standardConfig()
{
IndexWriterConfig writerConfig = new IndexWriterConfig( LuceneDataSource.KEYWORD_ANALYZER );

writerConfig.setMaxBufferedDocs( 100000 ); // TODO figure out depending on environment?
writerConfig.setMaxBufferedDocs( MAX_BUFFERED_DOCS ); // TODO figure out depending on environment?
writerConfig.setIndexDeletionPolicy( new MultipleBackupDeletionPolicy() );
writerConfig.setUseCompoundFile( true );

// TODO: TieredMergePolicy & possibly SortingMergePolicy
LogByteSizeMergePolicy mergePolicy = new LogByteSizeMergePolicy();
mergePolicy.setNoCFSRatio( 1.0 );
mergePolicy.setMinMergeMB( 0.1 );
mergePolicy.setMergeFactor( 2 );
mergePolicy.setNoCFSRatio( MERGE_POLICY_NO_CFS_RATIO );
mergePolicy.setMinMergeMB( MERGE_POLICY_MIN_MERGE_MB );
mergePolicy.setMergeFactor( MERGE_POLICY_MERGE_FACTOR );
writerConfig.setMergePolicy( mergePolicy );

return writerConfig;
Expand Down

0 comments on commit 2d5a4ff

Please sign in to comment.