[Java] Lucene框架IndexWriter、IndexReader单例 →→→→→进入此内容的聊天室

来自 , 2019-07-05, 写在 Java, 查看 118 次.
URL http://www.code666.cn/view/35cf8659
  1. package com.geostar.poi.support.lucene;
  2.  
  3.  import java.io.File;
  4.  import java.io.IOException;
  5.  
  6.  import org.apache.log4j.Logger;
  7.  import org.apache.lucene.analysis.Analyzer;
  8.  import org.apache.lucene.analysis.standard.StandardAnalyzer;
  9.  import org.apache.lucene.index.CorruptIndexException;
  10.  import org.apache.lucene.index.IndexReader;
  11.  import org.apache.lucene.index.IndexWriter;
  12.  import org.apache.lucene.index.IndexWriter.MaxFieldLength;
  13.  import org.apache.lucene.store.FSDirectory;
  14.  import org.apache.lucene.store.LockObtainFailedException;
  15.  import org.apache.lucene.util.Version;
  16.  
  17.  import com.geostar.poi.support.POIConfig;
  18.  
  19.  public class POILuceneManager implements LuceneManager{
  20.      private IndexWriter  indexWriter=null;
  21.      private IndexReader  indexReader=null;
  22.      //------lock 1
  23.      private Object lock_w=new Object();
  24.      //------lock 2
  25.      private Object lock_r=new Object();
  26.      
  27.      private Logger logger=Logger.getLogger(POILuceneManager.class);
  28.      @Override
  29.      public IndexWriter getIndexWriter() throws CorruptIndexException, LockObtainFailedException, IOException {        
  30.          synchronized(lock_w){
  31.             if(indexWriter==null){
  32.               System.out.println("创建对象");
  33.               if(IndexWriter.isLocked(FSDirectory.open(new File(POIConfig.DEFULT_POI_LUCENNE_INDEX_PATH)))){
  34.                   IndexWriter.unlock(FSDirectory.open(new File(POIConfig.DEFULT_POI_LUCENNE_INDEX_PATH)));
  35.               };
  36.               Analyzer any=new StandardAnalyzer(Version.LUCENE_CURRENT);
  37.               indexWriter=new IndexWriter(FSDirectory.open(new File(POIConfig.DEFULT_POI_LUCENNE_INDEX_PATH)),any,MaxFieldLength.UNLIMITED );
  38.             };
  39.            
  40.         }
  41.          return indexWriter;
  42.      }
  43.  
  44.      @Override
  45.      public IndexReader getIndexReader() throws CorruptIndexException, IOException {
  46.        synchronized (lock_r) {
  47.              if(indexReader==null){
  48.                  indexReader=IndexReader.open(FSDirectory.open(new File(POIConfig.DEFULT_POI_LUCENNE_INDEX_PATH)));
  49.              };
  50.          }
  51.          return  indexReader;
  52.      }
  53.  
  54.      @Override
  55.      public void closeIndexWriter() throws IOException {
  56.          // TODO Auto-generated method stub
  57.  //synchronized (lock_w) {
  58.              if(this.indexWriter!=null){
  59.                  this.indexWriter.close();
  60.              };
  61.          //}
  62.          
  63.      }
  64.  
  65.      @Override
  66.      public void closeIndexReader() throws IOException {
  67.          // TODO Auto-generated method stub
  68.  //synchronized (lock_r) {
  69.              if(this.indexReader!=null){
  70.                  this.indexReader.close();
  71.              };
  72.          //}
  73.          
  74.          
  75.      }
  76.  
  77.      @Override
  78.      public void closeAll() throws IOException {
  79.          // TODO Auto-generated method stub
  80.          this.closeIndexReader();
  81.          this.closeIndexWriter();
  82.          
  83.      }
  84.  
  85.  }

回复 "Lucene框架IndexWriter、IndexReader单例"

这儿你可以回复上面这条便签

captcha