Package proj.zoie.impl.indexing

Source Code of proj.zoie.impl.indexing.ZoieConfig$DefaultVersionComparator

package proj.zoie.impl.indexing;

import java.io.Serializable;
import java.util.Comparator;
import java.util.regex.Pattern;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.search.similarities.DefaultSimilarity;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.util.Version;

import proj.zoie.api.DocIDMapperFactory;
import proj.zoie.api.impl.DefaultDocIDMapperFactory;
import proj.zoie.impl.indexing.internal.DefaultRAMIndexFactory;
import proj.zoie.impl.indexing.internal.RAMIndexFactory;

/**
* Configuration parameters for building a ZoieSystem.
*/
public class ZoieConfig {
  /**
   * Default real-time setting: true
   */
  public static final boolean DEFAULT_SETTING_REALTIME = true;

  /**
   * Default batch size setting: 10000
   */
  public static final int DEFAULT_SETTING_BATCHSIZE = 10000;

  /**
   * Default batch delay setting: 300000ms or 5 min
   */
  public static final int DEFAULT_SETTING_BATCHDELAY = 300000;

  /**
   * Default max batch size setting: 10000
   */
  public static final int DEFAULT_MAX_BATCH_SIZE = 10000;

  /**
   * Default version comparator
   */
  public static final Comparator<String> DEFAULT_VERSION_COMPARATOR = new DefaultVersionComparator();

  DocIDMapperFactory docidMapperFactory = null;
  Comparator<String> versionComparator = null;
  Analyzer analyzer = null;
  Similarity similarity = null;
  int batchSize;
  long batchDelay;
  boolean rtIndexing = true;
  int maxBatchSize;
  long _freshness = 10000;
  ReaderCacheFactory readercachefactory = null;
  RAMIndexFactory<?> ramIndexFactory = null;
  boolean skipBadRecord = false;

  /**
   * Default constructor. Set the size of batch and batch delay to default value
   * 10000 events and 5 minutes respectively. Indexing mode default to realtime.
   * Using the default version comparator.
   */
  public ZoieConfig() {
    this(DEFAULT_VERSION_COMPARATOR);
  }

  /**
   * Constructor. Set the size of batch and batch delay to default value
   * 10000 events and 5 minutes respectively. Indexing mode default to realtime.
   */
  public ZoieConfig(Comparator<String> versionComparator) {
    this.batchSize = DEFAULT_SETTING_BATCHSIZE;
    this.batchDelay = DEFAULT_SETTING_BATCHDELAY;
    this.rtIndexing = true;
    this.maxBatchSize = DEFAULT_MAX_BATCH_SIZE;
    this.versionComparator = versionComparator;
  }

  public boolean isSkipBadRecord() {
    return skipBadRecord;
  }

  public void setSkipBadRecord(boolean skipBadRecord) {
    this.skipBadRecord = skipBadRecord;
  }

  public DocIDMapperFactory getDocidMapperFactory() {
    return docidMapperFactory == null ? new DefaultDocIDMapperFactory() : docidMapperFactory;
  }

  public void setDocidMapperFactory(DocIDMapperFactory docidMapperFactory) {
    this.docidMapperFactory = docidMapperFactory;
  }

  public Comparator<String> getVersionComparator() {
    return versionComparator;
  }

  public void setVersionComparator(Comparator<String> versionComparator) {
    this.versionComparator = versionComparator;
  }

  public Analyzer getAnalyzer() {
    return analyzer == null ? new StandardAnalyzer(Version.LUCENE_43) : analyzer;
  }

  public void setAnalyzer(Analyzer analyzer) {
    this.analyzer = analyzer;
  }

  public Similarity getSimilarity() {
    return similarity == null ? new DefaultSimilarity() : similarity;
  }

  public void setSimilarity(Similarity similarity) {
    this.similarity = similarity;
  }

  public int getBatchSize() {
    return batchSize;
  }

  public void setBatchSize(int batchSize) {
    this.batchSize = batchSize;
  }

  public long getBatchDelay() {
    return batchDelay;
  }

  public void setBatchDelay(long batchDelay) {
    this.batchDelay = batchDelay;
  }

  public boolean isRtIndexing() {
    return rtIndexing;
  }

  public void setRtIndexing(boolean rtIndexing) {
    this.rtIndexing = rtIndexing;
  }

  public int getMaxBatchSize() {
    return maxBatchSize;
  }

  public void setMaxBatchSize(int maxBatchSize) {
    this.maxBatchSize = maxBatchSize;
  }

  public long getFreshness() {
    return _freshness;
  }

  public void setFreshness(long freshness) {
    _freshness = freshness;
  }

  /**
   * @return the ReaderCacheFactory in this ZoieConfig. If the value is null, return the DefaultReaderCache Factory.
   */
  public ReaderCacheFactory getReadercachefactory() {
    if (readercachefactory == null) return DefaultReaderCache.FACTORY;
    return readercachefactory;
  }

  public void setReadercachefactory(ReaderCacheFactory readercachefactory) {
    this.readercachefactory = readercachefactory;
  }

  /**
   * @return the RAMIndexFactory in this ZoieConfig. If the value is null, return the DefaultRAMIndexFactory Factory.
   */
  @SuppressWarnings("rawtypes")
  public RAMIndexFactory<?> getRamIndexFactory() {
    if (ramIndexFactory == null) {
      return new DefaultRAMIndexFactory();
    }
    return ramIndexFactory;
  }

  public void setRamIndexFactory(RAMIndexFactory<?> ramIndexFactory) {
    this.ramIndexFactory = ramIndexFactory;
  }

  public static class DefaultVersionComparator implements Comparator<String>, Serializable {
    private static final long serialVersionUID = 1L;

    private static final Pattern _numPattern = Pattern.compile("[0-9]+");

    @Override
    public int compare(String s1, String s2) {
      if (s1 == s2) return 0;
      if (s1 == null) return -1;
      if (s2 == null) return 1;

      if (_numPattern.matcher(s1).matches() && _numPattern.matcher(s2).matches()) {
        try {
          return Long.valueOf(s1).compareTo(Long.valueOf(s2));
        } catch (Throwable t) {
        }
      }
      return s1.compareTo(s2);
    }

    public boolean equals(String s1, String s2) {
      return (compare(s1, s2) == 0);
    }
  }
}
TOP

Related Classes of proj.zoie.impl.indexing.ZoieConfig$DefaultVersionComparator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.