Lucene索引数据库

 

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.RAMDirectory;
import org.wltea.analyzer.lucene.IKAnalyzer;

import com.patent.common.connectionManage.ConnectionManage;
import com.patent.common.connectionManage.ResultManage;

/**
* @desc 专利数据索引管理类

*
*/
public class IndexManage {
private Directory ramdDirectory = null; //内存索引目录
private Directory fsdDirectory = null;//文件索引目录
private IndexWriter iwriter_ram = null; //
private IndexWriter iwriter_fsd = null; //
private ResultSet Result = null;//
private ConnectionManage connManage = null;
private int currectPage = 0 ;
/**
* @desc 初始化lucene索引。
*/
public IndexManage(){

try {
fsdDirectory
= FSDirectory.getDirectory("E:/temp/index/");
iwriter_fsd
= new IndexWriter(fsdDirectory,new IKAnalyzer(),true,IndexWriter.MaxFieldLength.LIMITED);
connManage
= new ConnectionManage();
}
catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取结果集
*
@return
*/
public void getResult(int currectPage){
ramdDirectory
= new RAMDirectory();
try {
iwriter_ram
= new IndexWriter(ramdDirectory,new IKAnalyzer(),true,IndexWriter.MaxFieldLength.LIMITED);

ResultManage rsManage
= new ResultManage(connManage.getConnection(),currectPage);
Result
= rsManage.getResultSet();
int k = 0;
while(Result.next()){
//System.out.println(currectPage+" "+k++);
//添加document
Document doc = new Document();
doc.add(
new Field("PatentNo",Result.getString("PatentNo"),Field.Store.YES,Field.Index.ANALYZED));
doc.add(
new Field("PublicationDate",Result.getString("PublicationDate"),Field.Store.YES,Field.Index.ANALYZED));
doc.add(
new Field("Title",Result.getString("Title"),Field.Store.YES,Field.Index.ANALYZED));
doc.add(
new Field("Inventors",Result.getString("Inventors"),Field.Store.YES,Field.Index.ANALYZED));
doc.add(
new Field("ANA",Result.getString("ANA"),Field.Store.YES,Field.Index.ANALYZED));
doc.add(
new Field("SerialNo",Result.getString("SerialNo")+Result.getString("SeriesCode"),Field.Store.YES,Field.Index.ANALYZED));
doc.add(
new Field("Filed",Result.getString("Filed"),Field.Store.YES,Field.Index.ANALYZED));
doc.add(
new Field("USCurrentClass",Result.getString("USCurrentClass"),Field.Store.YES,Field.Index.ANALYZED));
doc.add(
new Field("InternlClass",Result.getString("InternlClass"),Field.Store.YES,Field.Index.ANALYZED));
doc.add(
new Field("Abstract",Result.getString("Abstract"),Field.Store.YES,Field.Index.ANALYZED));

iwriter_ram.addDocument(doc);

}

iwriter_ram.commit();
iwriter_fsd.addIndexes(
new Directory[]{ramdDirectory});

}
catch (CorruptIndexException e) {
e.printStackTrace();
}
catch (LockObtainFailedException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}

}

/**
* 关闭indexWriter
*/
public void close(){
if(iwriter_fsd != null){
try {
iwriter_fsd.commit();
iwriter_fsd.close();
}
catch (CorruptIndexException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}

}
}

}

 

posted @ 2010-06-18 09:13  Me疯子_(~  阅读(334)  评论(0)    收藏  举报