`
iluoxuan
  • 浏览: 579994 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lucene4.0入门实例

 
阅读更多

1:以前用3.5的时候,到现在也差不多忘了,重新看了下文档,写个简单的例子

 

lucene4.0中有很多新的东西,其中Field类主要不能new Field()要通过其子类去实现比如new StringField()等,对分词等参数也有部分变化。

 

创建索引的代码如下:

 

 

package com.search.lucene;

import java.io.File;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Before;
import org.junit.Test;

public class IndexFile {

    protected String[] ids={"1", "2"};

    protected String[] content={"Amsterdam has lost of add  cancals", "i love  add this girl"};

    protected String[] city={"Amsterdam", "Venice"};

    private Directory dir;

    /**
     * 初始添加文档
     * @throws Exception
     */
    @Test
    public void init() throws Exception {
        String pathFile="D://lucene/index";
        dir=FSDirectory.open(new File(pathFile));
        IndexWriter writer=getWriter();
        for(int i=0; i < ids.length; i++) {
            Document doc=new Document();
            doc.add(new StringField("id", ids[i], Store.YES));
            doc.add(new TextField("content", content[i], Store.YES));
            doc.add(new StringField("city", city[i], Store.YES));
            writer.addDocument(doc);
        }
        System.out.println("init ok?");
        writer.close();
    }

    /**
     * 获得IndexWriter对象
     * @return
     * @throws Exception
     */
    public IndexWriter getWriter() throws Exception {
        Analyzer analyzer=new StandardAnalyzer(Version.LUCENE_40);
        IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_40, analyzer);
        return new IndexWriter(dir, iwc);
    }

}

 说明下:lucene4.0中有核心包和其他包:我导入


 

 

package com.search.lucene;

import java.io.File;

import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.junit.Test;

public class IndexSearch {

    /**
     * 查询
     * @throws Exception
     */
    @Test
    public void search() throws Exception {
        String filePath="D://lucene/index";
        Directory dir=FSDirectory.open(new File(filePath));
        IndexReader reader=DirectoryReader.open(dir);
        IndexSearcher searcher=new IndexSearcher(reader);
        Term term=new Term("content", "add");
        TermQuery query=new TermQuery(term);
        TopDocs topdocs=searcher.search(query, 5);
        ScoreDoc[] scoreDocs=topdocs.scoreDocs;
        System.out.println("查询结果总数---" + topdocs.totalHits+"最大的评分--"+topdocs.getMaxScore());
        for(int i=0; i < scoreDocs.length; i++) {
            int doc = scoreDocs[i].doc;
            Document document = searcher.doc(doc);
            System.out.println("content===="+document.get("content"));
            System.out.println("id--" + scoreDocs[i].doc + "---scors--" + scoreDocs[i].score+"---index--"+scoreDocs[i].shardIndex);
        }
        reader.close();
    }
}
 

 

  result:

  查询结果总数---2最大的评分--0.2972674

content====i love  add this girl
id--1---scors--0.2972674---index---1
content====Amsterdam has lost of add  cancals
id--0---scors--0.26010898---index---1
  • 大小: 7 KB
分享到:
评论
10 楼 2047699523 2015-04-02  
apache lucene开源框架demo使用实例教程源代码下载:http://www.zuidaima.com/share/klucene-p1-s1.htm
9 楼 u012046823 2014-12-11  
8 楼 jwc19890114 2014-11-08  
想问一下,我现在已经创建好了索引,想统计索引中所有词汇出现的次数,这个需要使用查询吗?
7 楼 高军威 2013-09-28  
嗯 嗯 楼主 排序sort分页 没有吗 分享下把
6 楼 tianmacgw 2013-04-23  
写的很好,学习了
5 楼 LovingBaby 2013-04-16  
跑了一下,确实是入门的好例子,不过应该搭配一下基础的流程介绍,会好一些~期待佳作!
4 楼 w120435999 2013-02-21  
   
3 楼 xmtopaz 2013-01-30  
    
2 楼 53873039oycg 2013-01-22  
不错的例子!
1 楼 whjpyyyy 2013-01-04  
good。。

相关推荐

    lucene4.0实例

    《Lucene4.0实例详解》 Lucene是一款强大的全文搜索引擎库,被广泛应用于各种信息检索系统中。这里我们主要探讨的是Lucene 4.0版本的实例应用,旨在通过实际操作来理解其核心概念和功能。 一、Lucene基础 Lucene ...

    lucene4.0+ik

    《深入理解Lucene4.0与IKAnalyzer2012:构建高效全文检索系统》 在信息化时代,数据量的快速增长使得高效的全文检索技术变得至关重要。Lucene作为Apache软件基金会的一个开源项目,是Java领域内最著名的全文搜索...

    Lucene4.0 IK分词器使用pdf

    ### Lucene4.0 IK分词器使用概览 #### IKAnalyzer:中文分词利器 IKAnalyzer是一款基于Java开发的开源中文分词工具包,自2006年首次发布以来,历经多个版本的迭代,已成为业界广泛认可的中文分词解决方案。其最初...

    lucene4.0 demo

    《Lucene 4.0:构建搜索引擎的基本操作详解》 Lucene 4.0是一款强大的全文搜索引擎库,广泛应用于各种信息检索系统。本教程通过一个简单的demo,将深入讲解如何利用Lucene 4.0创建索引、删除索引以及进行有效搜索。...

    lucene4.0简单的新增和查询

    这个 "LuceneDemo" 示例项目很可能是包含了上述过程的简单实现,包括如何初始化 `Directory`, 创建 `Analyzer`, 实例化 `IndexWriter` 和 `IndexSearcher`,以及构建和执行查询。通过学习这个项目,开发者可以快速...

    支持lucene4.0的paoding分词

    支持lucene4.0的paoding分词

    lucene4.0常用jar包

    lucene4.0常用jar包,里面有lucene-analyzers-common-4.0.0.jar,lucene-core-4.0.0.jar,lucene-highlighter-4.0.0.jar,lucene-queryparser-4.0.0.jar

    IK Analyzer 2012FF_hf1+lucene4.0的jar包

    标题中提到的" IK Analyzer 2012FF_hf1+lucene4.0的jar包 ",意味着这个压缩包包含了一个与Lucene4.0兼容的IK Analyzer 2012FF_hf1版本的Java档案(jar包)。这个jar包可以被Java应用或者全文检索服务(如Solr或...

    IK Analyzer 2012FF_hf1_IK分词lucene4.0_源码

    "IK Analyzer 2012FF_hf1_IK分词lucene4.0_源码" 提供的是IK分词器的一个特定版本,适用于Lucene 4.0,这在当时是一个相对老但仍然被一些项目依赖的版本。 分词是中文信息处理的关键步骤,它将连续的汉字序列分割成...

    Lucene4.0以上版本对应的IKAnalyzer2012包

    应用Lucene4.0版本时,发现用现有的IKAnalyzer2012.jar会有冲突,然后找到官网下载最新的IKAnalyzer2012源码,打包jar后解决

    lucene 3.0 入门实例

    **Lucene 3.0 入门实例** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了完整的搜索功能,包括索引、查询解析、排序以及高级的文本分析能力。在 Lucene 3.0 版本中,开发者可以利用其强大...

    lucene3.6入门实例教程

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

    Lucene3.0入门实例含jar包

    **Lucene 3.0 入门实例及关键知识点** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它为开发者提供了在应用程序中实现文本搜索功能的强大工具。本实例主要针对 Lucene 3.0 版本,这个版本虽然...

    IK Analyzer分析器jar包和使用文档,支持lucene4.0

    IK Analyzer不仅支持基本的分词功能,还能够与流行的全文检索框架Apache Lucene紧密集成,尤其在提供的版本中,它已经兼容Lucene 4.0。 IK Analyzer的核心思想是通过词典分词和文法分词相结合的方式,以达到更好的...

    Lucene 的入门 实例 代码

    【Lucene 入门教程】 Lucene 是一个由Apache软件基金会开发的开源全文检索引擎工具包,它并非一个完整的搜索引擎,而是提供了一个强大的架构,允许开发人员轻松地在他们的应用程序中集成全文检索功能。Lucene 支持...

    Apache Lucene3.0 入门实例介绍

    这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解: 1. **Lucene的架构**: Lucene的核心组件包括文档(Document)、字段(Field)、索引...

    lucene全文搜素实例 java lucene 实例

    **Lucene 全文搜索引擎实例:Java Lucene 实例** Lucene 是 Apache 软件基金会的一个开源项目,它提供了一个高性能、可扩展的信息检索库。这个实例将深入讲解如何在 Java 中使用 Lucene 来创建索引并执行各种搜索...

    Lucene索引器实例

    **Lucene索引器实例详解** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个高级的、灵活的、可扩展的接口,使得开发者能够轻松地在应用程序中实现全文...

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

    《Lucene使用代码实例之搜索文档》 Lucene是一个高性能、全文检索库,它提供了强大的文本分析和索引功能,广泛应用于搜索引擎开发和其他需要高效文本处理的场景。本篇文章主要面向初学者,通过实例详细解释如何使用...

Global site tag (gtag.js) - Google Analytics