首页>代码>基于JFinal的Springboot博客系统>/AutuBlog/src/main/java/com/autu/_admin/article/AdminArticleLuceneIndexes.java
package com.autu._admin.article;

import java.util.ArrayList;
import java.util.List;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexOptions;

import com.autu.common.annotation.SysLogInfo;
import com.autu.common.interceptor.SysLogInterceptor;
import com.autu.common.kit.EmailKit;
import com.autu.common.lucene.LuceneHelper;
import com.autu.common.model.entity.Article;
import com.autu.common.safe.JsoupFilter;
import com.jfinal.aop.Before;
import com.jfinal.aop.Inject;
import com.jfinal.log.Log;

@Before(SysLogInterceptor.class)
public class AdminArticleLuceneIndexes {
	
	private static final Log log = Log.getLog(EmailKit.class);
 
	
	@Inject
	private AdminArticleService adminArticleService;
	
	@SysLogInfo(value="重置索引",action="delete")
	public void resetArticleIndexes() {
		deleteAll();
		addAll();
	}

	
	public boolean deleteAll() {
		try {
			return LuceneHelper.single().deleteAll()>0;
		} catch (Exception e) {
			e.printStackTrace();
			log.error(e.getMessage(),e);
			return false;
		}
		
	}
	
	public boolean addAll() {
		List<Article> articleList=adminArticleService.listAll(1);
		List<Document> documents=new ArrayList<>();
		for(Article article:articleList) {
			documents.add(getDocument(article));
		}
		return LuceneHelper.single().createIndexs(documents)>0;
	}

	@SysLogInfo(value="添加多个文章索引",action="save")
	public boolean addIndexs(List<Article> articles) {
		List<Document> documents=new ArrayList<>();
		for(Article article:articles) {
			documents.add(getDocument(article));
		}
		return LuceneHelper.single().createIndexs(documents)>0;
	}
	
	@SysLogInfo(value="添加文章索引",action="save")
	public boolean addIndex(Article article) {
		//过滤html标签
		Document document = getDocument(article);
		return LuceneHelper.single().createIndex(document)>0;
	}

	/**
	 * 将article转换为document
	 * @param article
	 * @return
	 */
	private Document getDocument(Article article) {
		
		String content=JsoupFilter.filterArticleContent(article.getContent());
		article.setContent(content);
		
		Document document = new Document();
	    FieldType type = new FieldType();
	    type.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
	    type.setTokenized(false);
	    type.setStored(true);

	    Field idField=new Field("id", String.valueOf(article.getId()), type);
		Field  contentField = new TextField("content", article.getContent(), Store.YES);
		Field  titleField = new TextField("title", article.getTitle(), Store.YES);
		document.add(idField);
		document.add(contentField);
		document.add(titleField);
		return document;
	}
	
	
	@SysLogInfo(value="删除索引",action="delete")
	public boolean delete(Integer id) {
		return LuceneHelper.single().deleteIndex("id", id.toString())>0;
	 
	}
	
	@SysLogInfo(value="更新索引",action="update")
	public boolean update(Article article) {
		return LuceneHelper.single().updateIndex("id", article.getId().toString(), getDocument(article))>0;
	}
	
	 
}
最近下载更多
校园网  LV9 2023年5月31日
qingsj  LV6 2023年3月2日
dawnguarda  LV17 2022年11月2日
lcbaaa  LV6 2022年8月12日
wr450702  LV2 2022年5月18日
小尤ggggg  LV8 2022年5月9日
Demo1111  LV30 2022年3月14日
刘亦菲9527  LV15 2021年12月31日
采暖11  LV11 2021年12月6日
chinawind1990  LV5 2021年11月25日
最近浏览更多
krispeng  LV13 昨天
yellow_flowers  LV8 7月8日
TY0165  LV20 6月21日
玖零定制问题修复  LV34 5月4日
lichengai  LV7 2月26日
yxzzxy  LV3 2月18日
pangzhihui  LV14 2月15日
无敌霸王龙 1月18日
暂无贡献等级
skiler  LV4 1月7日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友