Lucene_demo00_IndexCURD

来源:互联网 发布:网络配音兼职网站推荐 编辑:程序博客网 时间:2024/06/06 12:59
索引库创建、查询 、修改 、删除 
Java代码  
  1. /** 
  2.  * @see 创建索引库,把article对象加入到索引库中 
  3.  * @see 查询 、修改 、删除 
  4.  */  
  5. public class ArticleIndexCUDR {  
  6.     /** 
  7.      * 创建索引库 
  8.      * @throws Exception 
  9.      */  
  10.     @Test  
  11.     public void testCreateIndex() throws Exception {  
  12.         IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory, LuceneUtils.analyzer, MaxFieldLength.LIMITED);  
  13.         Article article = new Article();  
  14.         article.setId(1L);  
  15.         article.setTitle("NBA总冠军");  
  16.         article.setContent("LBJ和韦德能带领热火在2013赛季拿到NBA总冠军吗");  
  17.         Document doc = DocumentUtils.article2Document(article);  
  18.         indexWriter.addDocument(doc);  
  19.         indexWriter.close();// 每次都要关闭  
  20.     }  
  21.   
  22.     /** 
  23.      * 批量创建索引库 
  24.      * @throws Exception 
  25.      */  
  26.     @Test  
  27.     public void testCreateIndexBatch() throws Exception {  
  28.         IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory, LuceneUtils.analyzer, MaxFieldLength.LIMITED);  
  29.         for (int i = 1; i <= 25; i++) {  
  30.             Article article = new Article();  
  31.             article.setId(Long.parseLong("" + i));  
  32.             article.setTitle("NBA总冠军");  
  33.             article.setContent("LBJ和韦德能带领热火在2013赛季拿到NBA总冠军吗");  
  34.             Document doc = DocumentUtils.article2Document(article);  
  35.             indexWriter.addDocument(doc);  
  36.         }  
  37.         indexWriter.close();  
  38.     }  
  39.   
  40.     /** 
  41.      * 查找索引 
  42.      * @throws Exception 
  43.      */  
  44.     @Test  
  45.     public void testSearchIndex() throws Exception {  
  46.         IndexSearcher indexSearcher = new IndexSearcher(LuceneUtils.directory);  
  47.         QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_30, new String[] { "title""content" }, LuceneUtils.analyzer);  
  48.         Query query = queryParser.parse("NBA");  
  49.         TopDocs topDocs = indexSearcher.search(query, 25);  
  50.         int count = topDocs.totalHits;// 总的抓取命中的记录数  
  51.         ScoreDoc[] scoreDocs = topDocs.scoreDocs;  
  52.         List<Article> articleList = new ArrayList<Article>();  
  53.         // 将查询到的索引添加到articleList中  
  54.         for (int i = 0; i < scoreDocs.length; i++) {  
  55.             int index = scoreDocs[i].doc;  
  56.             Document document = indexSearcher.doc(index);  
  57.             Article article = DocumentUtils.document2Article(document);  
  58.             articleList.add(article);  
  59.         }  
  60.   
  61.         // 输出查询到的内容  
  62.         for (Article article : articleList) {  
  63.             System.out.println(article.getId());  
  64.             System.out.println(article.getTitle());  
  65.             System.out.println(article.getContent());  
  66.         }  
  67.     }  
  68.   
  69.     /** 
  70.      * 删除操作是针对关键词对象进行删除的,封装的关键词在目录库中必须存在才能删除 
  71.      * @throws Exception 
  72.      */  
  73.     @Test  
  74.     public void deleteIndex() throws Exception {  
  75.         IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory, LuceneUtils.analyzer, MaxFieldLength.LIMITED);  
  76.         Term term = new Term("title""总冠军");// Term 关键词对象  
  77.         indexWriter.deleteDocuments(term);  
  78.         indexWriter.close();  
  79.     }  
  80.   
  81.     /** 
  82.      * 修改是先删除后增加 
  83.      * @throws Exception 
  84.      */  
  85.     @Test  
  86.     public void testUpdateIndex() throws Exception {  
  87.         IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory, LuceneUtils.analyzer, MaxFieldLength.LIMITED);  
  88.         Term term = new Term("title""总冠军");  
  89.         Article article = new Article();  
  90.         article.setId(1L);  
  91.         article.setTitle("热火总冠军");  
  92.         article.setContent("热火在2013赛季拿到NBA总冠军");  
  93.         Document doc = DocumentUtils.article2Document(article);  
  94.         indexWriter.updateDocument(term, doc);// 第一个参数:term作用是删除、第二个参数:documet作用是增加  
  95.         indexWriter.close();  
  96.     }  
  97. }  
0 0
原创粉丝点击