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

lucene内容创建查询Demo

阅读更多
lucene内容创建,查询

package com.wj.lucene;

import java.io.File;
import java.util.*;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;

/**
 * Lucene3.0 CRUD操作
 * 
 * @author jcom
 * @date 2010-9-28
 *
 */
public class CreateAndSearcherIndex {

	public static void main(String[] args) throws Exception
	{
		// 保存索引文件的地方
		String indexDir = "D:\\MOST\\data\\test\\indexDir";
		
		// 创建Directory对象
		Directory dir = new SimpleFSDirectory(new File(indexDir));  
		
		/**
		 * 创建IndexWriter对象, 
		 * 第一个参数是Directory, 
		 * 第二个是分词器,
		 * 第三个表示是否是创建, 如果为false为在此基础上面修改, 
		 * 第四表示表示分词的最大值,比如说new MaxFieldLength(2),就表示两个字一分,一般用IndexWriter.MaxFieldLength.LIMITED
		 */
		IndexWriter indexWriter = new IndexWriter(dir, new StandardAnalyzer(
				Version.LUCENE_30), true, IndexWriter.MaxFieldLength.UNLIMITED);
		
		//准备加入索引的內容
		Map<String, String> maps = new HashMap<String, String>();
		maps.put("col1", "east");
		maps.put("col2", "south");
		maps.put("col3", "west");
		maps.put("col4", "north");
		maps.put("col5", "center");

		/*
		 * 遍历键,通过键取值
		 * 循环创建加入
		 */
		Set set = maps.keySet();
		for (Object key : set) {

			String keyvalue = key.toString();
			String value = maps.get(key);
			System.out.println("键:" + keyvalue + "  值:" + value);

			Document doc = new Document();
			doc.add(new Field(keyvalue, value, Field.Store.YES,
					Field.Index.NOT_ANALYZED));
			indexWriter.addDocument(doc);
		}
		
		//提交关闭
		indexWriter.commit();
		indexWriter.close(); 
		
		
		/**
		 * 搜索指定内容的字符串		
		 */
        IndexSearcher indexSearch = new IndexSearcher(dir);   
        QueryParser queryParser = new QueryParser(Version.LUCENE_30, "col5",   
                new StandardAnalyzer(Version.LUCENE_30));   
        //指定查询内容
        Query query = queryParser.parse("center");   
        TopDocs hits = indexSearch.search(query, 20);
        
        System.out.println("一共找到:" + hits.totalHits + "条");   
        
        for (int i = 0; i < hits.scoreDocs.length; i++) 
        {   
            ScoreDoc sdoc = hits.scoreDocs[i];   
            Document doc = indexSearch.doc(sdoc.doc);   
            System.out.println("搜索的内容为:"+doc.get("col5"));   
        }
        
        indexSearch.close(); 
		
	}
}
分享到:
评论

相关推荐

    Lucene-Demo.rar Lucene分词的demo

    在运行这个Demo时,注意描述中提到的"存储地址",这通常指的是Lucene创建的索引文件的保存位置。开发者需要根据自己的环境修改这个路径,确保Lucene能够正确读写索引。在索引文本时,开发者会调用Lucene提供的API将...

    Lucene3.3.0学习Demo

    在这个"Lucene3.3.0学习Demo"中,你可以期待以下内容: - 示例代码展示如何初始化索引目录,创建`IndexWriter`实例,并使用`Document`对象添加字段来构建索引。 - 如何使用`Analyzer`处理文本,例如自定义分词规则...

    lucene for java 简单demo

    以上代码展示了如何使用Lucene创建一个简单的索引,添加文档,以及执行搜索和显示结果。这只是一个基础的示例,实际应用中,可能还需要考虑更复杂的查询、过滤、排序等功能,以及优化性能、处理大量数据等挑战。学习...

    Lucene常用的Demo

    **Lucene常用Demo详解** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它提供了文本分析、索引构建、搜索功能的核心工具,是Java开发者在项目中实现全文检索的重要利器。本篇文章将深入探讨...

    luceneDemo(完整代码)

    在"luceneDemo4.0"中,你将会看到以上概念的具体应用,包括创建索引、执行查询、高亮展示结果以及调整排序逻辑的示例代码。通过实践这个项目,你不仅可以了解Lucene的基本操作,还能学习到如何在实际项目中优化搜索...

    Lucene.Net全文检索Demo

    4. **Lucene.NetDemo**:这个Demo可能包含了创建索引和执行搜索的基本示例。开发者通常会创建一个`IndexWriter`实例,添加`Document`对象(代表要索引的文件或数据),然后调用`AddDocument`方法。搜索时,会创建`...

    简单的lucene demo

    4. **Lucene的简单demo**:这个项目包含两个关键文件——`TestLuceneSearch.java`和`TestLuceneIndex.java`,分别代表了Lucene的索引创建和搜索功能的示例代码。通过这两个文件,我们可以了解如何初始化索引器、添加...

    LuceneDemo

    3. 查询处理:用户输入查询字符串后,Lucene会使用同样的分词器处理查询,生成查询关键词的倒排列表,然后通过比较这些列表,找出所有匹配的文档。 4. 结果排序:Lucene会根据相关性对查询结果进行排序,相关性通常...

    lucene_demo例子

    在"lucene_demo"这个压缩包中,很可能包含了一些示例代码或者项目,用于演示如何使用Lucene进行实际的文本搜索开发。这些示例通常会涵盖以下几个关键知识点: 1. **安装与配置**:Lucene的下载、构建环境的搭建,...

    luceneDemo

    **Lucene 概述** Lucene 是一个高性能、全文本搜索库...实际的 "luceneDemo" 可能包含更丰富的功能,例如支持多字段查询、高亮显示搜索结果、分页显示等。学习和理解 Lucene,可以帮助开发者构建强大的全文检索系统。

    lucene简单demo

    在"LuceneDemo"这个项目中,你可以期待看到一个简单的Java程序,它将演示上述过程,可能包括创建一个或多个包含文本数据的Document,使用默认的StandardAnalyzer建立索引,然后执行一个基本的文本查询,展示搜索结果...

    Lucene5写的全文搜索的demo,包括创建索引和搜索

    总结,Lucene5 全文搜索 demo 展示了如何利用 Lucene 的核心组件创建和搜索索引。从索引的构建到查询的执行,每个步骤都涉及到对 Lucene API 的深入理解。通过学习这个示例,开发者可以进一步了解 Lucene 的工作原理...

    lucene 3.0 中的demo项目部署

    《Lucene 3.0 中的Demo项目部署详解》 Lucene,作为一款开源的全文检索库,一直以来都是Java开发者进行信息检索和文本分析的重要工具。在Lucene 3.0版本中,它提供了丰富的功能和优秀的性能,使得开发者能够快速...

    Lucene初探,一个初级的LuceneDemo

    通过学习和实践这个LuceneDemo,你可以对Lucene有一个初步的认识,了解如何创建、索引和搜索文档。随着深入学习,你会发现Lucene的强大之处在于其高度定制化的能力,可以满足各种复杂的搜索需求。在实际项目中,结合...

    Lucene.NET v3.0.3 DEMO范例程序(含PanGu分词)

    这是Lucene.NET v3.0.3 DEMO范例程序(含PanGu分词),用C#语言编写的,同时对PanGu分词进行了整合,可以直接下载运行。 项目中还整理了一个后台任务线程监听范例,可以用作增量索引创建,但这个需要你自行加入相关...

    Lucene(搜索)Demo

    在这个“Lucene(搜索)Demo”中,我们将深入探讨如何使用 Lucene 进行分词和查询,并了解其在 Dao 层中的基本实现。 1. **Lucene 分词** - **Analyzer**: Lucene 中的 Analyzer 是负责将输入的文本进行分词处理的...

    lucene 4.7.2 Demo

    《Lucene 4.7.2 Demo:Java全文搜索引擎的核心技术探索》 Lucene,作为Apache软件基金会的一个开源项目,是Java平台上的一个全文搜索引擎库。它的主要功能是提供高效、可扩展的文本检索和分析能力。在4.7.2这个版本...

    lucene Demo(paoding)

    【Lucene Demo (Paoding)】是一个展示如何在Java环境中使用Apache Lucene库进行全文搜索引擎构建的示例项目。Lucene是开源的全文检索引擎库,它提供了强大的文本搜索功能,而Paoding则是针对中文处理的插件,优化了...

    SpringBoot+Lucene搜索结果高亮显示Demo

    这个SpringBoot+Lucene的Demo为开发者提供了一个起点,可以在此基础上进一步扩展,比如增加对多字段的索引和搜索、支持多种类型的文档、优化查询性能等。通过熟练掌握这些知识,你可以构建出更加强大的全文搜索引擎...

    luceneDemo(创建索引+关键字查询)

    创建索引 一、创建词法分析器 二、创建索引存储目录 三、创建索引写入器 四、将内容存储到索引 关键字查询 一、创建索引存储目录读取器 二、创建索引搜索器 三、解析查询 四、获取结果

Global site tag (gtag.js) - Google Analytics