Example usage for org.apache.lucene.index MergePolicy setNoCFSRatio

List of usage examples for org.apache.lucene.index MergePolicy setNoCFSRatio

Introduction

In this page you can find the example usage for org.apache.lucene.index MergePolicy setNoCFSRatio.

Prototype

public void setNoCFSRatio(double noCFSRatio) 

Source Link

Document

If a merged segment will be more than this percentage of the total size of the index, leave the segment as non-compound file even if compound file is enabled.

Usage

From source file:org.eu.bitzone.Leia.java

License:Apache License

/**
 * Optimize the index./*from  w w w. j a  v  a2  s.c o m*/
 */
public void optimize(final Object dialog) {
    final Thread t = new Thread() {

        @Override
        public void run() {
            IndexWriter iw = null;
            final Object optimizeButton = find(dialog, "optimizeButton");
            setBoolean(optimizeButton, "enabled", false);
            final Object closeButton = find(dialog, "closeButton");
            setBoolean(closeButton, "enabled", false);
            final Object msg = find(dialog, "msg");
            final Object stat = find(dialog, "stat");
            setString(stat, "text", "Running ...");
            final PanelPrintWriter ppw = new PanelPrintWriter(Leia.this, msg);
            final boolean useCompound = getBoolean(find(dialog, "optCompound"), "selected");
            final boolean expunge = getBoolean(find(dialog, "optExpunge"), "selected");
            final boolean keep = getBoolean(find(dialog, "optKeepAll"), "selected");
            final boolean useLast = getBoolean(find(dialog, "optLastCommit"), "selected");
            final Object tiiSpin = find(dialog, "tii");
            final Object segnumSpin = find(dialog, "segnum");
            final int tii = Integer.parseInt(getString(tiiSpin, "text"));
            final int segnum = Integer.parseInt(getString(segnumSpin, "text"));
            try {
                if (is != null) {
                    is = null;
                }
                if (ir != null) {
                    ir.close();
                }
                if (ar != null) {
                    ar.close();
                }
                IndexDeletionPolicy policy;
                if (keep) {
                    policy = new KeepAllIndexDeletionPolicy();
                } else {
                    policy = new KeepLastIndexDeletionPolicy();
                }
                final IndexWriterConfig cfg = new IndexWriterConfig(LV, new WhitespaceAnalyzer(LV));
                if (!useLast) {
                    final IndexCommit ic = ((DirectoryReader) ir).getIndexCommit();
                    if (ic != null) {
                        cfg.setIndexCommit(ic);
                    }
                }
                cfg.setIndexDeletionPolicy(policy);
                cfg.setTermIndexInterval(tii);
                final MergePolicy p = cfg.getMergePolicy();
                cfg.setUseCompoundFile(useCompound);
                if (useCompound) {
                    p.setNoCFSRatio(1.0);
                }
                cfg.setInfoStream(ppw);
                iw = new IndexWriter(dir, cfg);
                final long startSize = Util.calcTotalFileSize(pName, dir);
                final long startTime = System.currentTimeMillis();
                if (expunge) {
                    iw.forceMergeDeletes();
                } else {
                    if (segnum > 1) {
                        iw.forceMerge(segnum, true);
                    } else {
                        iw.forceMerge(1, true);
                    }
                }
                iw.commit();
                final long endTime = System.currentTimeMillis();
                final long endSize = Util.calcTotalFileSize(pName, dir);
                final long deltaSize = startSize - endSize;
                final String sign = deltaSize < 0 ? " Increased " : " Reduced ";
                final String sizeMsg = sign + Util.normalizeSize(Math.abs(deltaSize))
                        + Util.normalizeUnit(Math.abs(deltaSize));
                final String timeMsg = String.valueOf(endTime - startTime) + " ms";
                showStatus(sizeMsg + " in " + timeMsg);
                iw.close();
                setString(stat, "text", "Finished OK.");
            } catch (final Exception e) {
                e.printStackTrace(ppw);
                setString(stat, "text", "ERROR - aborted.");
                errorMsg("ERROR optimizing: " + e.toString());
                if (iw != null) {
                    try {
                        iw.close();
                    } catch (final Exception e1) {
                    }
                }
            } finally {
                setBoolean(closeButton, "enabled", true);
            }
            try {
                actionReopen();
                is = new IndexSearcher(ir);
                // add dialog again
                add(dialog);
            } catch (final Exception e) {
                e.printStackTrace(ppw);
                errorMsg("ERROR reopening after optimize:\n" + e.getMessage());
            }
        }
    };
    t.start();
}

From source file:perf.Indexer.java

License:Apache License

private static MergePolicy getMergePolicy(String mergePolicy, boolean useCFS) {

    MergePolicy mp;
    if (mergePolicy.equals("LogDocMergePolicy")) {
        mp = new LogDocMergePolicy();
        mp.setNoCFSRatio(useCFS ? 1.0 : 0.0);
    } else if (mergePolicy.equals("LogByteSizeMergePolicy")) {
        mp = new LogByteSizeMergePolicy();
        mp.setNoCFSRatio(useCFS ? 1.0 : 0.0);
    } else if (mergePolicy.equals("NoMergePolicy")) {
        mp = NoMergePolicy.INSTANCE;//from  w  ww.  j av a2s .c  o m
    } else if (mergePolicy.equals("TieredMergePolicy")) {
        final TieredMergePolicy tmp = new TieredMergePolicy();
        //tmp.setMaxMergedSegmentMB(1000000.0);
        tmp.setNoCFSRatio(useCFS ? 1.0 : 0.0);
        mp = tmp;
    } else {
        throw new RuntimeException("unknown MergePolicy " + mergePolicy);
    }

    return mp;
}