com.orientechnologies.lucene.tx.OLuceneTxChangesAbstract.java Source code

Java tutorial

Introduction

Here is the source code for com.orientechnologies.lucene.tx.OLuceneTxChangesAbstract.java

Source

/*
 *
 *  * Copyright 2014 Orient Technologies.
 *  *
 *  * Licensed under the Apache License, Version 2.0 (the "License");
 *  * you may not use this file except in compliance with the License.
 *  * You may obtain a copy of the License at
 *  *
 *  *      http://www.apache.org/licenses/LICENSE-2.0
 *  *
 *  * Unless required by applicable law or agreed to in writing, software
 *  * distributed under the License is distributed on an "AS IS" BASIS,
 *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  * See the License for the specific language governing permissions and
 *  * limitations under the License.
 *
 */

package com.orientechnologies.lucene.tx;

import com.orientechnologies.common.log.OLogManager;
import com.orientechnologies.lucene.engine.OLuceneIndexEngine;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TopDocs;

import java.io.IOException;

/**
 * Created by Enrico Risa on 28/09/15.
 */
public abstract class OLuceneTxChangesAbstract implements OLuceneTxChanges {

    public static final String TMP = "_tmp_rid";

    protected final IndexWriter writer;
    protected final OLuceneIndexEngine engine;
    protected final IndexWriter deletedIdx;

    public OLuceneTxChangesAbstract(OLuceneIndexEngine engine, IndexWriter writer, IndexWriter deletedIdx) {
        this.writer = writer;
        this.engine = engine;
        this.deletedIdx = deletedIdx;
    }

    public IndexSearcher searcher() {
        // TODO optimize
        try {
            return new IndexSearcher(DirectoryReader.open(writer, true));
        } catch (IOException e) {
            OLogManager.instance().error(this, "Error during searcher instantiation", e);
        }

        return null;
    }

    @Override
    public long deletedDocs(Query query, Filter filter) {

        try {
            IndexSearcher indexSearcher = new IndexSearcher(DirectoryReader.open(deletedIdx, true));

            if (filter != null) {
                TopDocs search = indexSearcher.search(query, filter, Integer.MAX_VALUE);
                return search.totalHits;
            } else {
                TopDocs search = indexSearcher.search(query, Integer.MAX_VALUE);
                return search.totalHits;
            }
        } catch (IOException e) {
            OLogManager.instance().error(this, "Error during searcher instantiation", e);
        }

        return 0;
    }
}