索引建立

public static String strIndex = AppConfig
.get("SERVICE.PATH.FILE.LUCENCEINDEX"); //D:/index/
public static final String EMPUSERBASE = "empuserbase"; //文件夹名称
/**
* @see 活动索引建立
* @throws Exception
*/
@SuppressWarnings("unchecked")
public void appendActivesIndex() throws Exception {
logger.info("活动搜索建立索引开始");
long startTime = System.currentTimeMillis();
IndexWriter indexWriter = null;
try {
indexWriter = new IndexWriter(FSDirectory.open(new File(
strIndex  + EMPUSERBASE )),
new StandardAnalyzer(Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.LIMITED);
indexWriter.setUseCompoundFile(false);
} catch (Exception e) {
logger.info(e.getMessage(), e);
throw e;
}
List appList = empuserDao.findByList();
for (int i = 0; null != appList && i < appList.size(); i++) {
try {
Document doc = new Document();
doc.add(getField(Constants.ID,
((Map) appList.get(i)).get("ID"), false));// 活动ID
doc.add(getField(Constants.USERCODE, ((Map) appList.get(i))
.get("USERCODE"), false));
doc.add(getField(Constants.NICKNAME, ((Map) appList.get(i))
.get("NICKNAME"), true));
doc.add(getField(Constants.CREATETIME,
((Map) appList.get(i)).get("CREATETIME"), false));// 创建时间
doc.add(new Field(Constants.TOTALDATA, "1", Field.Store.YES,
Field.Index.NOT_ANALYZED));// 数据标识符
indexWriter.addDocument(doc);
} catch (Exception e) {
logger.info(e.getMessage(), e);
continue;
}

}
try {
indexWriter.optimize();
indexWriter.close();
} catch (Exception e) {
logger.info(e.getMessage(), e);
return;
}

LuceneUtils.setEppendActivityPathDirectory(null);
LuceneUtils.setEppendActivitySearcher(null);
long end = System.currentTimeMillis();
logger.info("代理搜索建立索引结束");
logger.info("代理搜索建立索引结束" + (end - startTime) + "ms");
}

/**
* @see 生成Field对象,放在Document里面
* @param String
* @return Field
*/
private Field getField(String fieldName, Object obj, Boolean flag) {
if (flag) {
// 需要分词的情况
return new Field(fieldName, obj == null ? "" : obj.toString(),
Field.Store.YES, Field.Index.ANALYZED);
} else {
// 不需要分词的情况
return new Field(fieldName, obj == null ? "" : obj.toString(),
Field.Store.YES, Field.Index.NOT_ANALYZED);
}

}

猜你喜欢

转载自ykdn2010.iteye.com/blog/1096568