美文网首页
Lucene 入门 04 - 全文检索查询的代码实现

Lucene 入门 04 - 全文检索查询的代码实现

作者: __Y_Q | 来源:发表于2020-01-15 15:40 被阅读0次

上一章说的是索引库的创建, 这章来实现查询, 查询上章创建的索引.
查询一般分为以下几个步骤

  • 创建一个 Directory 对象, 指定要查询的索引库的位置
  • 创建一个 IndexReader 对象, (创建索引库的时候, 对象是 IndexWriter ), 需要指定 Directory 对象
  • 创建一个 IndexSearch 查询对象, 需要指定 IndexReader.
  • 创建一个 TermQuery 对象, 指定查询的域和要查询的关键词.
  • 执行查询
  • 返回查询结果, 遍历查询结果并输出
  • 关闭 IndexReader 对象.

下面就让我们用代码来实现一个简单的索引库的查询

    @Test
    public void searchIndex(String fid, String text) throws Exception {
        //1.创建一个 Director 对象, 指定索引库保存的位置
        Directory mDirectory = FSDirectory.open(new File("/Users/yzhang/Desktop/Director").toPath());

        //2. 创建一个 indexReader 对象
        IndexReader indexReader = DirectoryReader.open(mDirectory);

        //3.创建 IndexSearcher 查询对象
        IndexSearcher indexSearcher = new IndexSearcher(indexReader);

        //4. 创建一个 Query 对象, TermQuery 关键词查询, 找到 name 域中, 包含 spring 关键词的文档
        //name 是上一章中,我们创建索引库的时候添加的 Field.
        Query query = new TermQuery(new Term("name", "spring"));

        //5. 执行查询, 得到一个 TopDocs 对象, 10 是指查询结果返回的最大记录数
        //意思是,有 100 条的话, 就拿 10 条.
        TopDocs topDocs = indexSearcher.search(query, 10);
        System.out.println("总记录数:" + topDocs.totalHits);

        //6. 获取返回结果, 取文档列表
        ScoreDoc[] scoreDocs = topDocs.scoreDocs;
        //打印文档中的内容
        for (ScoreDoc scoreDoc : scoreDocs) {
            //取文档 ID
            int docID = scoreDoc.doc;
            //根据文档 ID 取文档对象
            Document document = indexSearcher.doc(docID);
            System.out.println("name:" + document.get("name"));
            System.out.println("path:" + document.get("path"));
            //这里就不输出内容了, 不然等下截图的时候, 图片太大,
            //System.out.println("content:" + document.get("content"));
            System.out.println("size:" + document.get("size"));
            System.out.println("\n--------------------------------------------------------\n");
        }
        //关闭 IndexReader 对象
        indexReader.close();
    }
查询结果

这是最基本的查询, 后面会说到一些别的查询. 基本的查询到此为止, 下一章是分析器的基本使用.

相关文章

  • Lucene入门

    什么是Lucene 可以使用Lucene实现全文检索。Lucene是apache下的一个开放源代码的全文检索引擎工...

  • lucene实例与源码解析

    lucene是什么? 全文检索的引擎工具包,实现了全文检索的类库。全文检索,将查询的目标对象提取出来构造一套索引,...

  • Lucene & 全文检索

    目录结构:1.全文检索 2.Lucene入门3.Lucene进阶 全文检索 一, 生活中的搜索:1.Win...

  • 全文检索Lucene代码实现

    导包 首先来一个Test测试 Hello Word 创建一个文件 存放索引 随意 我起的index 运行之后-看...

  • lucene的增删改查

    lucene全文检索,还是直接看代码吧 lucene依赖 IndexReader与IndeaSearch工厂类新版...

  • Lucene基础入门.

    一 什么是Lucene Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索...

  • ElasticSearch - Lucene

    Lucene 全文检索的心,天才的想法。 一个高效的,可扩展的,全文检索库。 全部用 Java 实现,无须配置。 ...

  • Java实现全文检索-Solr

    全文检索技术分析 使用Lucene实现单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、...

  • Java实现全文检索-Lucene

    1.1. 数据分类 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。非结构化数据:指不定长或无...

  • Lucene就是这么简单

    什么是Lucene?? Lucene是apache软件基金会发布的一个开放源代码的全文检索引擎工具包,由资深全文检...

网友评论

      本文标题:Lucene 入门 04 - 全文检索查询的代码实现

      本文链接:https://www.haomeiwen.com/subject/mivfzctx.html