package com.jspxcms.common.fulltext; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.search.SearcherFactory; import org.apache.lucene.search.SearcherManager; import org.springframework.beans.factory.BeanInitializationException; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; /** * 搜索Manager工厂类 * * @author liufang * */ public class SearcherManagerFactoryBean implements FactoryBean<SearcherManager>, InitializingBean, DisposableBean { private SearcherManager searcherManger; private IndexWriter indexWriter; public SearcherManager getObject() throws Exception { if (searcherManger == null) { searcherManger = new SearcherManager(indexWriter, true, new SearcherFactory()); } return searcherManger; } public Class<SearcherManager> getObjectType() { return SearcherManager.class; } public void afterPropertiesSet() throws Exception { if (indexWriter == null) { throw new BeanInitializationException( "Must specify a indexWriter property"); } } public void destroy() throws Exception { if (searcherManger != null) { searcherManger.close(); } } public boolean isSingleton() { return true; } public void setIndexWriter(IndexWriter indexWriter) { this.indexWriter = indexWriter; } }