使用LuceneUtil工具类,完成CURD操作
package loaderman.curd; import java.util.ArrayList;
import java.util.List; import loaderman.entity.Article;
import loaderman.util.LuceneUtil;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.junit.Test; /**
* 增删改查索引库
* @author AdminTC
*/
public class ArticleDao {
@Test
public void add() throws Exception{
Article article = new Article(1,"培训","传智是一家java培训机构");
Document document = LuceneUtil.javabean2document(article);
IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());
indexWriter.addDocument(document);//核心
indexWriter.close();
}
@Test
public void addAll() throws Exception{
IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength()); Article article1 = new Article(1,"培训","传智是一家java培训机构");
Document document1 = LuceneUtil.javabean2document(article1);
indexWriter.addDocument(document1); Article article2 = new Article(2,"培训","传智是一家net培训机构");
Document document2 = LuceneUtil.javabean2document(article2);
indexWriter.addDocument(document2); Article article3 = new Article(3,"培训","传智是一家php培训机构");
Document document3 = LuceneUtil.javabean2document(article3);
indexWriter.addDocument(document3); Article article4 = new Article(4,"培训","传智是一家ios培训机构");
Document document4 = LuceneUtil.javabean2document(article4);
indexWriter.addDocument(document4); Article article5 = new Article(5,"培训","传智是一家ui培训机构");
Document document5 = LuceneUtil.javabean2document(article5);
indexWriter.addDocument(document5); Article article6 = new Article(6,"培训","传智是一家c++培训机构");
Document document6 = LuceneUtil.javabean2document(article6);
indexWriter.addDocument(document6); Article article7 = new Article(7,"培训","传智是一家seo培训机构");
Document document7 = LuceneUtil.javabean2document(article7);
indexWriter.addDocument(document7); indexWriter.close();
}
@Test
public void update() throws Exception{
Article newArticle = new Article(1,"培训","传智是一家JAVA培训机构");
Document document = LuceneUtil.javabean2document(newArticle);
IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());
//更新id=7的document对象
/*
* 参数一:term表示需要更新的document对象,id表示document对象中的id属性,7表示该id属性的值
* 参数二:新的document对象
*/
indexWriter.updateDocument(new Term("id","1"),document);//核心
indexWriter.close();
}
@Test
public void delete() throws Exception{
IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());
indexWriter.deleteDocuments(new Term("id","2"));//核心
indexWriter.close();
}
@Test
public void deleteAll() throws Exception{
IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());
indexWriter.deleteAll();//核心
indexWriter.close();
} @Test
public void findAllByKeywords() throws Exception{
String keywords = "培";
List<Article> articleList = new ArrayList<Article>();
QueryParser queryParser = new QueryParser(LuceneUtil.getVersion(),"content",LuceneUtil.getAnalyzer());
Query query = queryParser.parse(keywords);
IndexSearcher indexSearcher = new IndexSearcher(LuceneUtil.getDirectory());
TopDocs topDocs = indexSearcher.search(query,100);//核心
for(int i=0;i<topDocs.scoreDocs.length;i++){
ScoreDoc scoreDoc = topDocs.scoreDocs[i];
int no = scoreDoc.doc;
Document document = indexSearcher.doc(no);
Article article = (Article)LuceneUtil.document2javabean(document,Article.class);
articleList.add(article);
}
for(Article a : articleList){
System.out.println( a );
}
}
}
使用LuceneUtil工具类,完成CURD操作的更多相关文章
- C#工具类:Json操作帮助类(转载)
原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...
- 【转载】C#工具类:Json操作帮助类
Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...
- 【转载】C#工具类:FTP操作辅助类FTPHelper
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样.可以通过C#中的FtpWebRequest类.NetworkCredential类.We ...
- Java常用工具类之数据库操作辅助类DBUtil.java
package com.qushida.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.be ...
- 12:集合map、工具类
一.map集合 Map:一次添加一对元素.Collection 一次添加一个元素. Map也称为双列集合,Collection集合称为单列集合. 其实map集合中存储的就是键值对(结婚证书), map ...
- Java学习笔记33(集合框架七:Collections工具类)
数组有工具类,方面操作数组 集合也有工具类:Collections 常用方法示例: package demo; import java.util.ArrayList; import java.util ...
- Class工具类
Class工具类,提供操作class类的方法,源码如下: import java.io.File; import java.io.FileFilter; import java.io.IOExcept ...
- Collections与Arrays工具类
Collections工具类: 排序操作: void reverse(List list)//反转 void shuffle(List list)//随机排序 void sort(List list) ...
- StringUtils工具类常用api <转>
该工具类是用于操作Java.lang.String类的. StringUtils类与String类的区别在于:此类是null安全的,即如果输入参数String为null,则不会抛出NullPointe ...
随机推荐
- Django项目实战—用户头像上传
1 将文件保存到服务器本地 upload.html <!DOCTYPE html> <html lang="en"> <head> <me ...
- 404boom 博客闪现【不断的优化更新中。。。】
404boom 博客闪现[不断的优化更新中...] 停止本篇博文EQ继续优化,所有博文将会在标签[cnblogs_v2 ]中重新整理,待完成统一放上链接 一:Java SE相关1.Java的概述2.J ...
- python主要模块 和 常用方法简览
******************** PY核心模块方法 ******************** os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename ...
- 08_Redis通用命令
keys pattern:获取所有与pattern匹配的key,返回所有与该key匹配的keys:通配符:*表示任意0个或多个任意字符,?表示任意一个字符
- LoadRunner(7)
一.参数化策略 1.Select next row(How? 如何取?)取值方式 选择下一行 1)Sequential:顺序的 每个VU都从第一行开始,顺序依次向下取值: 数据取完可以从头循环重复使用 ...
- Lambda表达式语法进一步巩固
上一次已经初步使用到了Lambda表达式了,这次再次对它的语法进行一下巩固,因为它实在是太重要的,所以多花时间彻底理解它是非常有必要的. 在"Java8 in Action"一书中 ...
- React 入门与实战-课时7 虚拟DOM的本质和目的
DOM树的概念: 一个网页呈现的过程: 1.浏览器请求服务器获取页面HTML代码 2.浏览器先在内存中,解析DOM结构,并在浏览器内存中,渲染出一颗DOM树: 3.浏览器把DOM树,呈现到页面上: R ...
- RAID 10是将RAID 1和RAID 0结合
RAID 10是将RAID 1和RAID 0结合,它的优点是同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低.由于利用了RAID 0极高的 ...
- 第一份c语言作业
2.1 你对软件工程专业或者计算机科学与技术专业了解是怎样? •答案: 软件工程专业是个年轻的专业,紧跟这个信息化的新时代.我学习它是因为感兴趣,经过一周的学习,我了解了一些 该专业课程主要是c语言程 ...
- 在Google Maps 上点击标签显示说明并保持不消失
JS如下: (function() { window.onload = function() { // Creating an object literal containin ...