Lucene基础入门讲解

灰太狼 2021-01-24 03:35 882阅读 0赞

在这里插入图片描述

  • 创建索引

    • 环境:

      • 需要下载Lucene
      • http://lucene.apache.org/
      • 最低要求jdk1.8
    • 工程搭建:

      • 创建一个java工程
      • 添加jar:

        • lucene- analyzers- common-7.4.0. jar
        • lucene-core-7.4.0.jar
        • commons-io. jar
    • 步骤:

      1. 创建- -个Director对象,指定索引库保存的位置。
      2. 基于Directory对象创建一 个IndexWriter对象
      3. 读取磁盘上的文件,对应每个文件创建一个文档对象。
      4. 向文档对象中添加域
      5. 把文档对象写入索引库
      6. 关闭indexwriter对象
      7. 取文档列表
      8. 打印文档中的内容
      9. 关闭IndexReader对象
  • 使用luke查看索引库中的内容
  • 查询索引库
    步骤:

    1. 创建一个Director对象,指定索引库的位置
    2. 创建一个IndexReader对 象
    3. 创建一-个IndetSearcher对象,构造方法中的参数indexReader对象。
    4. 创建一个Query对象,TermQuery
    5. 执行查询,得到一个TopDocs对象
    6. 取查询结果的总记录数

创建索引参考最后代码的第一个方法。

  • luke可以自行下载,如果之前下载的Lucene版本是及比较新的,里面应该会含有luke。
    在这里插入图片描述
    在这里插入图片描述
    双击luke.bat即可运行,(注意前提条件是,电脑已经安装了jdk)

    1. package cn.neu.lucene;
    2. import org.apache.commons.io.FileUtils;
    3. import org.apache.lucene.document.Document;
    4. import org.apache.lucene.document.Field;
    5. import org.apache.lucene.document.TextField;
    6. import org.apache.lucene.index.*;
    7. import org.apache.lucene.search.*;
    8. import org.apache.lucene.store.Directory;
    9. import org.apache.lucene.store.FSDirectory;
    10. import org.junit.Test;
    11. import java.io.File;
    12. /** * @Author WCJ * @Description **/
    13. public class LuceneFirst {
    14. @Test
    15. public void createIndex() throws Exception{
    16. Directory directory = FSDirectory.open(new File("D:\\1_download_install\\my\\lucene\\indexDemo1").toPath());
    17. IndexWriter indexWriter = new IndexWriter(directory,new IndexWriterConfig());
    18. File dir = new File("D:\\1_download_install\\my\\lucene\\test");
    19. File[] files = dir.listFiles();
    20. for (File f : files) {
    21. String name = f.getName();
    22. String path = f.getPath();
    23. String content = FileUtils.readFileToString(f,"utf-8");
    24. long size = FileUtils.sizeOf(f);
    25. Field fieldName = new TextField("name",name, Field.Store.YES);
    26. Field fieldPath = new TextField("path",path, Field.Store.YES);
    27. Field fieldContent = new TextField("content",content, Field.Store.YES);
    28. Field fieldSize = new TextField("size",size+"", Field.Store.YES);
    29. Document document = new Document();
    30. document.add(fieldName);
    31. document.add(fieldPath);
    32. document.add(fieldContent);
    33. document.add(fieldSize);
    34. indexWriter.addDocument(document);
    35. }
    36. indexWriter.close();
    37. }
    38. @Test
    39. public void searchIndex()throws Exception{
    40. Directory directory = FSDirectory.open(new File("D:\\1_download_install\\my\\lucene\\indexDemo1").toPath());
    41. IndexReader indexReader = DirectoryReader.open(directory);
    42. IndexSearcher indexSearcher = new IndexSearcher(indexReader);
    43. Query query = new TermQuery(new Term("content","java"));
    44. TopDocs topDocs = indexSearcher.search(query,10);//n:最大返回记录数
    45. System.out.println("查询总记录数:"+topDocs.totalHits);
    46. ScoreDoc[] scoreDocs = topDocs.scoreDocs;
    47. for (ScoreDoc sd : scoreDocs) {
    48. int id = sd.doc;
    49. Document d = indexSearcher.doc(id);
    50. System.out.println(d.get("name"));
    51. System.out.println(d.get("size"));
    52. System.out.println(d.get("path"));
    53. System.out.println(d.get("content"));
    54. System.out.println("--------------寂寞的分割线-------------");
    55. }
    56. indexReader.close();
    57. }
    58. }

发表评论

表情:
评论列表 (有 0 条评论,882人围观)

还没有评论,来说两句吧...

相关阅读

    相关 lucene入门

    Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的时为软件开发人员提供一个简单易用的工具包,

    相关 Lucene入门

    > lucene 是一个全文检索引擎的架构,提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。 创建索引库 俩种储存方式: 第一种: //将索引存

    相关 Lucene的使用,Lucene入门

    本文主要介绍几个方面,为什么使用Lucene使用场景,解决的问题,Lucene的入门使用,以及Lucene一些语法(增删改查)。 一简述Lucene概念:磁盘上的一些邮件,文

    相关 lucene入门(三)

    前面两篇文章介绍了如何创建索引和搜索索引,理解了的话基本上就已经可以使用Lucene进行简单的全文检索了。学习完lucene之后,我个人有一个小小的demo,只是为了练习,在这

    相关 Lucene基础入门讲解

    步骤: 创建- -个Director对象,指定索引库保存的位置。 基于Directory对象创建一 个IndexWriter对象 读取磁盘上的文件,对应每个文件创建一个...