`

七、搜索的简单实现(TermQuery)

 
阅读更多

TermQuery只能精确匹配字符串(包括分词后的字符串,不分词的就需要全部匹配),不能用于数字的匹配。

 

1、创建IndexReader ,创建IndexSearcher

    public IndexSearcher getSearcher(Directory directory) {
        try {
            if(reader==null) {
                reader = IndexReader.open(directory);
            } else {
                IndexReader tr = IndexReader.openIfChanged(reader);
                if(tr!=null) {
                    reader.close();
                    reader = tr;
                }
            }
            return new IndexSearcher(reader);
        } catch (CorruptIndexException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }


2、创建Term和TermQuery,根据TermQuery获取TopDocs,根据TopDocs获取ScoreDoc,根据ScoreDoc获取相应文档

    public void searchByTerm(String field,String name,int num) {
        try {
            IndexSearcher searcher = getSearcher();
            Query query = new TermQuery(new Term(field,name));
            TopDocs tds = searcher.search(query, num);

            System.out.println("一共查询了:"+tds.totalHits);//tds.totalHits是总记录数,和传入的num没有任何关系,num表示本次查询多少条记录
            for(ScoreDoc sd:tds.scoreDocs ) {
                Document doc = searcher.doc(sd.doc) ;
                System.out.println(doc.get("id")+"---->"+
                        doc.get("name")+"["+doc.get("email")+"]-->"+doc.get("id")+","+
                        doc.get("attach")+","+doc.get("date"));
            }
            searcher.close();
        } catch (CorruptIndexException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

分享到:
评论

相关推荐

    用lucene实现的简易搜索引擎

    本文将详细介绍如何利用Lucene来实现一个简易的搜索引擎,同时涵盖其HTML解析功能。 一、Lucene核心组件与工作流程 1. 文档索引:Lucene首先需要对数据进行索引,这个过程包括分词、词性标注、建立倒排索引等步骤...

    用Lucene实现Java里面的搜索引擎

    在提供的压缩包"LuceneOldSearch"中,可能包含了使用旧版本Lucene实现的一个简单的搜索引擎示例。这个示例可能涵盖了从建立索引到执行查询的完整流程,以及如何处理文本数据和错误检查。学习这个示例能帮助开发者更...

    lucene实现企业搜索实例

    **Lucene实现企业搜索实例** 在企业环境中,高效、精准的搜索能力是至关重要的,它可以帮助员工快速定位信息,提高工作效率。Apache Lucene是一个开源的全文检索库,它提供了强大的文本搜索功能,能够帮助企业构建...

    elasticsearch Java代码实现

    本主题聚焦于“Elasticsearch Java代码实现”,将深入探讨如何使用Java API来执行基本的操作,如创建索引、删除索引、更新索引、模糊搜索以及模糊全文搜索和精确查找。 首先,让我们从`ESManager.java`开始,这个类...

    Lucene使用代码实例之搜索文档

    `TermQuery`是`Query`的实现之一,是最基础的查询类型。它的构造函数`TermQuery(new Term(“fieldName”,”queryWord”))`接受一个`Term`对象作为参数,用于表示我们要执行的精确匹配查询。这意味着,只有当文档中的...

    Lucene简单应用

    - 通过一个简单的示例来展示如何使用Lucene创建索引以及如何执行基本的全文搜索操作。 #### 三、Lucene内置Query对象 - Lucene提供了多种查询对象,如TermQuery、BooleanQuery、PhraseQuery等,这些对象用于构造...

    使用Lucene实现一个简单的布尔搜索功能

    Apache Lucene 是一个高度可扩展的全文检索库,它为开发者提供了一套强大的搜索引擎功能,以便在各种应用程序中实现复杂的全文搜索。Lucene 不是一个独立的搜索引擎产品,而是需要开发者将其集成到自己的系统中,以...

    分布式搜索elasticsearchjavaAPI之(五)------搜索实用.pdf

    Elasticsearch是一个强大的分布式搜索引擎,基于Lucene库构建。在Java API中,与Elasticsearch交互,特别是进行搜索操作,主要是通过使用`QueryBuilder`对象来构造JSON格式的查询条件。本篇文章将深入探讨如何利用...

    java源码搜索链接java(结合lucene)版的公交搜索系统-javaso

    综上所述,这个公交搜索系统是一个典型的基于Java和Lucene技术的应用案例,通过灵活运用Java语言的优势和Lucene的强大功能,实现了高效的数据索引和搜索能力。对于开发者而言,了解和掌握这种技术组合的实现细节,...

    搜索引擎中的分词以及查找的编程心得

    ### 搜索引擎中的分词与查找技术 在探讨搜索引擎中的分词技术和查找机制之前,我们首先需要理解几个基本概念:分词(Tokenization)、词干提取(Stemming)和词形还原(Lemmatization)。这些技术是构建高效、准确...

    Lucene搜索实例

    Apache Lucene 是一个高性能、全文本搜索引擎库,它为开发者提供了在各种应用程序中实现全文检索的工具集。Lucene 并不是一个完整的应用,而是一个 Java 类库,可以被其他 Java 应用程序所使用。在这个搜索实例中,...

    使用Lucene.net进行全文搜索

    压缩包中的`SampleLuceneNet`可能包含一个简单的示例,演示了如何使用Lucene.NET创建索引、执行搜索以及处理结果。通过阅读和运行这个示例,你可以更直观地了解上述概念的实现。 总结来说,Lucene.NET为.NET开发者...

    Lucene实现多种高级搜索形式

    实现域搜索的关键在于使用`Field`对象和`TermQuery`或`BooleanQuery`。清单2演示了如何利用API进行域搜索。 除了基本的布尔和域搜索,Lucene还支持更高级的搜索特性,如短语搜索、模糊搜索、范围搜索、评分和排序等...

    lucene部分常用代码

    MultifieldQueryParser可以将多个字段合并到一个查询中,从而实现多字段搜索。下面是一个简单的示例代码: ```java query query = multifieldqueryparser.parse("name*", new string[] {fieldname, fieldvalue}, ...

    Lucene实现索引和查询的实例讲解

    SimpleAnalyzer 是一个简单的 Analyzer,适合简单的文本切分。SmartChineseAnalyzer 是一个中文 Analyzer,适合中文文本的切分。 Lucene 的实现需要具备一定的 Java 基础知识和全文检索的知识,包括 Java 语言基础...

    Lucene3.0之查询类型详解

    - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较低。 - **索引查询**:基于预构建的索引结构,能够快速找到匹配的文档,是Lucene的主要查询方式。 2. **理论模型**: - **布尔模型**:基于集合论和...

    Lucene查询语法

    Lucene是一款高性能、全功能的文本搜索引擎库,被广泛应用于各种需要实现全文检索的应用场景之中。Lucene支持复杂的查询语法,能够灵活地处理多样化的查询需求,使得用户能够精确地找到所需的信息。 #### 二、...

    lucene教案1

    - **使用 Query 子类查询**:通过创建 Query 对象(如 TermQuery、PhraseQuery 等)直接指定搜索条件。 - **使用 QueryParser 查询**:QueryParser 提供了一种更灵活的方式来构造查询,它可以自动处理关键词的语法和...

    Lucene时间区间搜索

    总之,Lucene在C#中的时间区间搜索是通过构建和执行RangeQuery来实现的,这涉及到索引构建、查询解析、时间值的转换和比较等多个环节。合理地利用这些技术,可以有效地提升数据检索的效率和准确性。在实际应用中,还...

Global site tag (gtag.js) - Google Analytics