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();
}
}
分享到:
相关推荐
在运行这个Demo时,注意描述中提到的"存储地址",这通常指的是Lucene创建的索引文件的保存位置。开发者需要根据自己的环境修改这个路径,确保Lucene能够正确读写索引。在索引文本时,开发者会调用Lucene提供的API将...
在这个"Lucene3.3.0学习Demo"中,你可以期待以下内容: - 示例代码展示如何初始化索引目录,创建`IndexWriter`实例,并使用`Document`对象添加字段来构建索引。 - 如何使用`Analyzer`处理文本,例如自定义分词规则...
以上代码展示了如何使用Lucene创建一个简单的索引,添加文档,以及执行搜索和显示结果。这只是一个基础的示例,实际应用中,可能还需要考虑更复杂的查询、过滤、排序等功能,以及优化性能、处理大量数据等挑战。学习...
**Lucene常用Demo详解** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它提供了文本分析、索引构建、搜索功能的核心工具,是Java开发者在项目中实现全文检索的重要利器。本篇文章将深入探讨...
在"luceneDemo4.0"中,你将会看到以上概念的具体应用,包括创建索引、执行查询、高亮展示结果以及调整排序逻辑的示例代码。通过实践这个项目,你不仅可以了解Lucene的基本操作,还能学习到如何在实际项目中优化搜索...
4. **Lucene.NetDemo**:这个Demo可能包含了创建索引和执行搜索的基本示例。开发者通常会创建一个`IndexWriter`实例,添加`Document`对象(代表要索引的文件或数据),然后调用`AddDocument`方法。搜索时,会创建`...
4. **Lucene的简单demo**:这个项目包含两个关键文件——`TestLuceneSearch.java`和`TestLuceneIndex.java`,分别代表了Lucene的索引创建和搜索功能的示例代码。通过这两个文件,我们可以了解如何初始化索引器、添加...
3. 查询处理:用户输入查询字符串后,Lucene会使用同样的分词器处理查询,生成查询关键词的倒排列表,然后通过比较这些列表,找出所有匹配的文档。 4. 结果排序:Lucene会根据相关性对查询结果进行排序,相关性通常...
在"lucene_demo"这个压缩包中,很可能包含了一些示例代码或者项目,用于演示如何使用Lucene进行实际的文本搜索开发。这些示例通常会涵盖以下几个关键知识点: 1. **安装与配置**:Lucene的下载、构建环境的搭建,...
**Lucene 概述** Lucene 是一个高性能、全文本搜索库...实际的 "luceneDemo" 可能包含更丰富的功能,例如支持多字段查询、高亮显示搜索结果、分页显示等。学习和理解 Lucene,可以帮助开发者构建强大的全文检索系统。
在"LuceneDemo"这个项目中,你可以期待看到一个简单的Java程序,它将演示上述过程,可能包括创建一个或多个包含文本数据的Document,使用默认的StandardAnalyzer建立索引,然后执行一个基本的文本查询,展示搜索结果...
总结,Lucene5 全文搜索 demo 展示了如何利用 Lucene 的核心组件创建和搜索索引。从索引的构建到查询的执行,每个步骤都涉及到对 Lucene API 的深入理解。通过学习这个示例,开发者可以进一步了解 Lucene 的工作原理...
《Lucene 3.0 中的Demo项目部署详解》 Lucene,作为一款开源的全文检索库,一直以来都是Java开发者进行信息检索和文本分析的重要工具。在Lucene 3.0版本中,它提供了丰富的功能和优秀的性能,使得开发者能够快速...
通过学习和实践这个LuceneDemo,你可以对Lucene有一个初步的认识,了解如何创建、索引和搜索文档。随着深入学习,你会发现Lucene的强大之处在于其高度定制化的能力,可以满足各种复杂的搜索需求。在实际项目中,结合...
这是Lucene.NET v3.0.3 DEMO范例程序(含PanGu分词),用C#语言编写的,同时对PanGu分词进行了整合,可以直接下载运行。 项目中还整理了一个后台任务线程监听范例,可以用作增量索引创建,但这个需要你自行加入相关...
在这个“Lucene(搜索)Demo”中,我们将深入探讨如何使用 Lucene 进行分词和查询,并了解其在 Dao 层中的基本实现。 1. **Lucene 分词** - **Analyzer**: Lucene 中的 Analyzer 是负责将输入的文本进行分词处理的...
《Lucene 4.7.2 Demo:Java全文搜索引擎的核心技术探索》 Lucene,作为Apache软件基金会的一个开源项目,是Java平台上的一个全文搜索引擎库。它的主要功能是提供高效、可扩展的文本检索和分析能力。在4.7.2这个版本...
【Lucene Demo (Paoding)】是一个展示如何在Java环境中使用Apache Lucene库进行全文搜索引擎构建的示例项目。Lucene是开源的全文检索引擎库,它提供了强大的文本搜索功能,而Paoding则是针对中文处理的插件,优化了...
这个SpringBoot+Lucene的Demo为开发者提供了一个起点,可以在此基础上进一步扩展,比如增加对多字段的索引和搜索、支持多种类型的文档、优化查询性能等。通过熟练掌握这些知识,你可以构建出更加强大的全文搜索引擎...
创建索引 一、创建词法分析器 二、创建索引存储目录 三、创建索引写入器 四、将内容存储到索引 关键字查询 一、创建索引存储目录读取器 二、创建索引搜索器 三、解析查询 四、获取结果