67,513
社区成员
发帖
与我相关
我的任务
分享
Directory dir = null;
IndexWriter indexWriter = null;
IndexWriterConfig conf = null;
Analyzer analyzer = new IKAnalyzer();
dir = FSDirectory.open(new File(INDEX_PATH));
conf = new IndexWriterConfig(Version.LUCENE_36, analyzer);
LogMergePolicy mergePolicy = new LogByteSizeMergePolicy();
//设置segment添加文档(Document)时的合并频率
mergePolicy.setMergeFactor(20);
//设置segment最大合并文档(Document)数
mergePolicy.setMaxMergeDocs(500);
//启用复合式索引文件格式,合并多个segment
mergePolicy.setUseCompoundFile(true);
conf.setMergePolicy(mergePolicy);
//设置索引的打开模式
conf.setOpenMode(OpenMode.CREATE_OR_APPEND);
//创建索引器
indexWriter = new IndexWriter(dir, conf);
ResultSet set = db.getResultSet("select id,subject,content,posted from news");
List<Document> docs = new ArrayList<Document>();
int i = 0;
//这里set里面有2万条数据
while (set.next())
{
Document doc = new Document();
doc.add(new Field("id", set.getString("id"), Store.YES, Index.NOT_ANALYZED));
doc.add(new Field("subject", set.getString("subject"), Store.YES, Index.ANALYZED));
doc.add(new Field("content", set.getString("content"), Store.YES, Index.ANALYZED));
doc.add(new Field("posted", DateTools.dateToString(set.getDate("posted"), DateTools.Resolution.DAY), Store.YES, Index.ANALYZED));
docs.add(doc);
if (i++ % 500 == 0)
{
indexWriter.addDocuments(docs);
System.out.println(docs.size());
docs.clear();
System.gc();
}
//indexWriter.addDocument(doc, analyzer);
//indexWriter.addDocument(doc);
}