`

Lucene3.6 各种Query效果测试

 
阅读更多

package com.meiyu.lucene;

import java.io.File;

import org.apache.lucene.document.Document;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.FSDirectory;

public class TestQuery extends TestLucene36
{
    
    /**
     * 测试各种Query
     * 
     * 
@throws Exception 
     * 
@throws CorruptIndexException 
     
*/
    private static void testQuery() throws Exception
    {
        /**获取IndexSearcher*/
        IndexReader reader = IndexReader.open(FSDirectory.open(new File(indexPath)));
        IndexSearcher searcher = new IndexSearcher(reader);
        
        /**1.TermQuery 按词条搜索*/
        Query query =  new TermQuery(new Term("desc","获得"));
        
        /**2.MultiTermQuery*/
        
        
        /**3.BooleanQuery 布尔搜索*/
//        BooleanQuery query = new BooleanQuery();
//        Query query1 =  new TermQuery(new Term("desc","获得"));
//        Query query2 =  new TermQuery(new Term("name","白"));
//        query.add(query1, BooleanClause.Occur.SHOULD);
//        query.add(query2, BooleanClause.Occur.MUST);
        
        /**4.WildcardQuery 通配符搜索*/
//        WildcardQuery query = new WildcardQuery(new Term("desc", "因为*"));//*?
        
        /**5.PhraseQuery 多关键字的搜索*/
//        PhraseQuery query = new PhraseQuery();
//        query.add(new Term("desc","因为"));
//        query.add(new Term("desc","巨乳"));
//        query.setSlop(5);//通过setSlop()方法来设定一个称之为“坡度”的变量来确定关键字之间是否允许、允许多少个无关词汇的存在
        
        /**6.PrefixQuery 前缀搜索*/
//        PrefixQuery query = new PrefixQuery(new Term("desc","因为"));
        
        /**7.MultiPhraseQuery */
//        MultiPhraseQuery query=new MultiPhraseQuery();
//        query.add(new Term[]{new Term("desc","因为"),new Term("desc","巨乳")});
        
        /**8.FuzzyQuery 相近词语的搜索*/
//        FuzzyQuery query = new FuzzyQuery(new Term("desc","巨乳"));
        
        /**9.TermRangeQuery 范围查询(主要指文本)*/
//        TermRangeQuery query = new TermRangeQuery("desc","250","300",true,true);
        
        /**10.NumericRangeQuery 范围查询(索引字段必须是 NumbericField)*/
//        NumericRangeQuery<Integer> query = NumericRangeQuery.newIntRange("birth", 1980, 1983, true, false);
        
        /**11.SpanQuery 跨度查询*/
//      SpanTermQuery query1 = new SpanTermQuery(new Term("desc", "因为"));//单独使用SpanTermQuery同TermQuery
//      SpanTermQuery query2 = new SpanTermQuery(new Term("desc", "巨乳"));
//      SpanNearQuery query  = new SpanNearQuery(new SpanQuery[]{query1, query2}, 5, true);//数值代表跨度范围 
        
        
        
        ScoreDoc[] hits = searcher.search(query,10).scoreDocs;
        for(ScoreDoc scoreDoc:hits)
        {
            Document doc= searcher.doc(scoreDoc.doc);
            System.out.println(scoreDoc.score + "\tid:"+doc.get("id")+"\tname:"+doc.get("name")+"\tbirth:"+doc.get("birth")+"\tdesc:"+doc.get("desc"));
        }
    }
    
    
    public static void main(String[] args) throws Exception 
    {
//        index();
        testQuery();
    }
}

分享到:
评论

相关推荐

    lucene3.6.jar

    这里的“lucene3.6.jar”是一个包含了Lucene 3.6版本核心功能的Java类库,它是实现全文检索的基础。 Lucene的核心特性包括索引构建、查询解析、搜索执行以及结果排序等。索引构建允许开发者将大量文本数据转换为...

    Lucene 3.6 学习笔记

    以上就是Lucene 3.6的学习笔记,涵盖了从基础到高级的各种搜索和索引操作,以及相关的分词和扩展功能。通过学习这些内容,可以深入理解Lucene的工作机制,并利用其强大的搜索能力构建高效的应用。

    lucene 3.6 全文检索

    《Lucene 3.6 全文检索技术详解》 Lucene是一个开源的全文检索库,由Apache软件基金会开发,广泛应用于各种搜索场景。在本文中,我们将深入探讨Lucene 3.6版本中的核心概念和技术,以帮助你更好地理解和应用这一...

    lucene 3.6

    Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发,广泛应用于各种搜索引擎的构建。在 Lucene 3.6 版本中,它提供了强大的文本搜索功能,适用于Java开发人员。这个版本相对稳定,对于初学者来说是一个很好...

    lucene3.6工程原文件

    **Lucene 3.6 全文检索框架详解** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级的、灵活的、可扩展的搜索程序开发框架,使得开发者可以轻松地在应用程序中集成全文搜索功能。在...

    lucene3.6的入门案例

    **Lucene 3.6 入门案例** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了完整的搜索功能,包括索引、查询、评分等,广泛应用于各种项目和产品中。在这个入门案例中,我们将深入理解如何...

    基于lucene3.6平台搜索工具相关包及使用说明

    《基于Lucene 3.6平台的搜索工具详解与应用指南》 Lucene是一个高性能、全文本搜索引擎库,由Apache软件基金会开发并维护。在3.6版本中,Lucene提供了一套完整的搜索解决方案,包括索引构建、查询解析、结果排序等...

    lucene3.6 的源代码

    在`src/java/org/apache/lucene/search`目录中,`Query`类及其子类定义了各种查询类型,如`TermQuery`、`BooleanQuery`和`WildcardQuery`。查询构造器如`QueryParser`将用户的自然语言输入转换为对应的查询对象,...

    基于Lucene3.6进行全文检索的小案例

    Apache Lucene是一个高性能、全文本搜索库,它为开发者提供了强大的文本搜索功能,使得在各种应用中实现复杂而高效的搜索引擎成为可能。在这个小案例中,我们将了解Lucene的基本概念,以及如何构建一个简单的全文...

    lucene3.6入门实例教程

    《Lucene 3.6 入门实例教程》是一份专为初学者设计的指南,旨在帮助用户快速掌握Apache Lucene 3.6版本的基本概念和应用。Lucene是一个高性能、全文检索库,广泛用于构建搜索功能强大的应用程序。这份教程通过完整的...

    lucene3.6源码

    《深入剖析Lucene 3.6源码》 Lucene是一个高性能、全文检索库,它由Apache软件基金会开发并维护,被广泛应用于各种搜索引擎的构建。Lucene 3.6.1是其历史版本之一,虽然现在有更新的版本,但3.6.1版本因其稳定性及...

    lucene-3.6

    《Lucene 3.6 全文搜索引擎技术详解》 Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。在3.6版本中,Lucene为开发者提供了强大的文本搜索功能,使得在网站或应用程序中实现高效、精确的全文搜索成为...

    lucene3.6.1学习

    Lucene 是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发中。本学习资料主要聚焦于 Lucene 3.6.1 版本,这个版本在当时具有稳定性和功能性的良好平衡。我们将通过分析其源码和使用工具来深入理解 Lucene...

    lucene_3.6.1_API

    `FuzzyQuery`用于实现近似搜索,允许用户指定编辑距离。`WildcardQuery`和`PrefixQuery`则实现了通配符和前缀搜索。 为了提高搜索性能,Lucene引入了缓存机制。`Filter`类可以对查询结果进行过滤,如按日期范围筛选...

    lucene-3.6.0.zip

    Apache Lucene是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发中。3.6.0版本是Lucene的一个重要里程碑,它提供了丰富的功能和改进,使得开发者能够更高效地构建搜索解决方案。下面我们将深入探讨Lucene...

    lucene索引

    #### 3.6 关闭资源 最后,记得关闭所有打开的资源。 ```java reader.close(); directory.close(); ``` 以上就是 Lucene 创建索引和进行全文搜索的基本流程。通过熟练掌握这些步骤,开发者可以构建出高效、灵活的...

    hibernate3.6所用包

    - `hibernate-search-orm.jar`:提供了全文搜索功能,基于Lucene集成。 - `hibernate-annotations.jar`和`hibernate-validator.jar`:前者提供了ORM的注解支持,后者实现了JSR 303/349 Bean Validation规范,用于...

    solr的增删改查和高亮以及分组

    &lt;query&gt;title:测试&lt;/query&gt; ``` #### 1.5 提交(Commit) 添加、更新或删除操作后,需执行`commit`命令,使更改生效。Solr允许配置自动提交,也可手动触发。 ### 2. 高亮显示 高亮显示是突出搜索结果中匹配...

    SOLR的应用教程

    6.8 Query Response Compression 6.9 Embedded vs HTTP Post 6.10 RAM Usage Considerations 6.10.1 OutOfMemoryErrors 6.10.2 Memory allocated to the Java VM **七、FAQ** 解答关于Solr使用过程中可能遇到的问题...

    开源企业搜索引擎SOLR的应用教程

    **6.8 Query Response Compression** - 开启查询响应压缩,减少网络传输时间。 **6.9 Embedded vs HTTP Post** - 比较本地嵌入式服务器与HTTP Post方式的优缺点。 **6.10 RAM Usage Considerations(内存方面的...

Global site tag (gtag.js) - Google Analytics