view src/nabble/model/lucene/LuceneSearcherImpl.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line source

package nabble.model.lucene;

import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.Collector;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.TopFieldDocs;
import org.apache.lucene.search.Sort;


final class LuceneSearcherImpl implements LuceneSearcher {
	private static final Logger logger = LoggerFactory.getLogger(LuceneSearcherImpl.class);

	private final LuceneSearcher searcher;
	private boolean isClosed = false;

	LuceneSearcherImpl(LuceneSearcher searcher) {
		this.searcher = searcher;
	}

	public void close() throws IOException {
		if( !isClosed ) {
			searcher.close();
			isClosed = true;
		}
	}

	@Override protected void finalize() throws Throwable {
		if( !isClosed ) {
			logger.error("didn't close IndexSearcher"/*,initException*/);
			close();
		}
		super.finalize();
	}

	public void search(Query query,Collector results) throws IOException {
		searcher.search(query,results);
	}

	public void search(Query query,Filter filter,Collector results) throws IOException {
		searcher.search(query,filter,results);
	}

	public TopDocs search(Query query,int n) throws IOException {
		return searcher.search(query,n);
	}

	public TopDocs search(Query query,Filter filter,int n) throws IOException {
		return searcher.search(query,filter,n);
	}

	public TopFieldDocs search(Query query,Filter filter,int n,Sort sort) throws IOException {
		return searcher.search(query,filter,n,sort);
	}

	public Document doc(int i) throws CorruptIndexException, IOException {
		return searcher.doc(i);
	}
}