首页>代码>基于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日
最近浏览更多
wkq888  LV17 4月9日
krispeng  LV15 2024年11月20日
yellow_flowers  LV8 2024年7月8日
TY0165  LV20 2024年6月21日
玖零定制问题修复  LV34 2024年5月4日
微信网友_6927932988952576  LV12 2024年3月31日
lichengai  LV7 2024年2月26日
yxzzxy  LV3 2024年2月18日
pangzhihui  LV14 2024年2月15日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友