/**
* 增刪改查索引庫
* @author AdminTC
*/
public class ArticleDao {
@Test
public void add() throws Exception{
Article article = new Article(1,"高考","高考第一天,第一天");
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, "高考","高考第一天,第一天" );
Document document1 = LuceneUtil.javabean2document(article1);
indexWriter.addDocument(document1);
Article article2 = new Article(2, "高考","高考次日,次日" );
Document document2 = LuceneUtil.javabean2document(article2);
indexWriter.addDocument(document2);
Article article3 = new Article(3, "高考","高考第三天,第三天" );
Document document3 = LuceneUtil.javabean2document(article3);
indexWriter.addDocument(document3);
Article article4 = new Article(4, "高考","高考第四天,第四天" );
Document document4 = LuceneUtil.javabean2document(article4);
indexWriter.addDocument(document4);
Article article5 = new Article(5, "高考","高考第五天,第五天" );
Document document5 = LuceneUtil.javabean2document(article5);
indexWriter.addDocument(document5);
Article article6 = new Article(6, "高考","高考第六天,第六天" );
Document document6 = LuceneUtil.javabean2document(article6);
indexWriter.addDocument(document6);
Article article7 = new Article(7, "高考","高考第七天,第七天" );
Document document7 = LuceneUtil.javabean2document(article7);
indexWriter.addDocument(document7);
indexWriter.close();
}
@Test
public void update() throws Exception{
Article newArticle = new Article(1, "高考","高考第一天,第一天,好難" );
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 );
}
}
}java