package com.test;
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;
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.Searcher;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
public class Lucene24 {
public static void createIndex(Directory dir, Analyzer analyzer) {
try {
//参数依次:索引目录、分词工具、是否清空目录、字段值的最大长度(UNLImited即Interger.MaxValue)
IndexWriter writer = new IndexWriter(dir, analyzer, true,
IndexWriter.MaxFieldLength.UNLIMITED);
Document doc = new Document();
doc.add(new Field("name", "jack lucy", Field.Store.YES,
Field.Index.ANALYZED));
doc.add(new Field("country", "中国 美国", Field.Store.YES,
Field.Index.ANALYZED));
writer.addDocument(doc);
doc = new Document();
doc.add(new Field("name", "lucy lily", Field.Store.YES,
Field.Index.ANALYZED));
doc.add(new Field("country", "美国 日本", Field.Store.YES,
Field.Index.ANALYZED));
writer.addDocument(doc);
doc = new Document();
doc.add(new Field("name", "lily john", Field.Store.YES,
Field.Index.ANALYZED));
doc.add(new Field("country", "日本 韩国", Field.Store.YES,
Field.Index.ANALYZED));
writer.addDocument(doc);
doc = new Document();
doc.add(new Field("name", "john tom", Field.Store.YES,
Field.Index.ANALYZED));
doc.add(new Field("country", "韩国 法国", Field.Store.YES,
Field.Index.ANALYZED));
writer.addDocument(doc);
doc = new Document();
doc.add(new Field("name", "tom july", Field.Store.YES,
Field.Index.ANALYZED));
doc.add(new Field("country", "法国 德国", Field.Store.YES,
Field.Index.ANALYZED));
writer.addDocument(doc);
doc = new Document();
doc.add(new Field("name", "july kate", Field.Store.YES,
Field.Index.ANALYZED));
doc.add(new Field("country", "德国 英国", Field.Store.YES,
Field.Index.ANALYZED));
writer.addDocument(doc);
// writer.optimize();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void search(Directory dir, Analyzer analyzer) {
try {
Searcher searcher = new IndexSearcher(dir);
Query query = new QueryParser("country", analyzer).parse("美国");
//此处在2.0基础上有改动,此处必须传入一个返回条数,这里用searcher.maxDoc()表示返回所有条数。
ScoreDoc[] docs = searcher.search(query, searcher.maxDoc()).scoreDocs;
System.out.println(docs.length);;
Document doc;
for (int i = 0; i < docs.length; i++) {
doc = searcher.doc(docs[i].doc);
System.out.println(doc.get("country"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
Analyzer analyzer = new StandardAnalyzer();
FSDirectory dir = FSDirectory.getDirectory(new File("C:\\Lucene_index"));
createIndex(dir, analyzer);
search(dir, analyzer);
dir.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
**Lucene 2.4 入门例子** Lucene 是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了强大的搜索功能,被广泛应用于各种应用中的信息检索。在这个入门例子中,我们将探讨Lucene 2.4版本的一些关键特性和...
**Lucene 2.4 完美样例与中文文档详解** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它为开发者提供了在 Java 应用程序中实现全文检索功能的强大工具。Lucene 2.4 版本是其历史上的一个重要...
《Lucene 2.4与Nutch学习笔记:在多文本文档中搜索关键词》 Lucene是一个高性能、全文本搜索引擎库,它为开发者提供了在Java应用程序中实现全文搜索功能的基本工具。Nutch则是一个开源的网络爬虫项目,用于抓取...
"例题"则表明这是一个实践导向的学习材料,而"最新版"可能意味着这些例子和练习反映了Lucene 2.4的最新特性或更新。 【压缩包子文件的文件名称列表】"lucence2.4"很可能包含了与Lucene 2.4相关的源代码、文档、测试...
《Lucene全文检索:简单索引与搜索实例详解》 Lucene是Apache软件基金会的开源项目,是一款强大的全文检索库,被广泛应用于Java开发中,为开发者提供了构建高性能搜索引擎的能力。在本文中,我们将深入探讨如何基于...
- **commons-io-2.4.jar**:Apache Commons IO是Java的一个工具库,提供了大量的I/O操作辅助类,如文件读写、流操作等,对于处理Lucene的文件操作非常有用。 **使用步骤** 1. **创建索引**:首先,需要创建一个`...
接着,`lucene-demos-3.0.2.jar`则是Lucene的演示程序集合,它为开发者提供了直观的例子,帮助理解和学习如何使用Lucene。这些示例涵盖了从最基本的索引创建,到复杂的查询构造和结果排序。例如,...
例如,可以创建一个QueryParser类,处理用户输入的关键词,进行分词、分析和逻辑组合,生成相应的Query实例。 #### 2.3 搜索服务 封装搜索服务是为了提供统一的搜索接口,可以包括分页搜索、高亮显示、排序等功能...
4.2 案例分析:分享基于Lucene 5.4.0的搜索引擎构建实例,例如新闻网站的全文搜索、电商产品的推荐系统等。 五、未来发展趋势 5.1 版本迭代:探讨Lucene后续版本的新特性,如6.x、7.x引入的创新技术。 5.2 社区...
下面是一个简单的Lucene使用示例,演示如何创建索引和添加文档: ```java // 创建索引写入器 IndexWriter writer = new IndexWriter("/data/index/", new StandardAnalyzer(), true); // 创建文档 Document doc = ...
本资源是struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0整合实例,可以为初学入门者,提供个参考,本人也是网上找的,感觉很不错(因其中所用的jar文件太大,无法上传,大家可以自己添加各框架...
如果项目中需要操作文件,可能还需要commons-io-2.4.jar包。 二、创建索引: 1. 选择原始文档所在的目录和索引库要存放的目录。 2. 使用FSDirectory.open()方法打开索引库目录,创建IndexWriter对象用于写入索引...
然而,单个 Lucene 实例可能无法应对大规模的数据量,因此,将 Lucene 集成到分布式系统中,实现分布式搜索,成为了提高检索效率和可扩展性的有效解决方案。 ### 1. 引言 #### 1.1 目的 本设计说明书旨在详细阐述...
标题中的“lucene3.0”指的是Apache Lucene的3.0版本,这是一个开源的全文检索库,由Java编写。Lucene提供了强大的文本分析、索引和搜索功能,被广泛应用于各种信息检索系统中。而“高亮显示”通常是指在搜索结果中...
通过设置断点,观察类的实例化过程,跟踪方法调用,可以深入了解Lucene的实现细节。 总结,Lucene 7.4.0作为一款强大的全文搜索引擎库,其在Java开发环境中提供了高效、灵活的搜索解决方案。通过IDEA工程的集成,...
它通过集成 Apache Lucene(一个高性能、全功能的文本搜索引擎库),为开发人员提供了一种简单而强大的方式来添加搜索功能到基于 Hibernate 的应用程序中。 #### 二、开始使用 ##### 2.1 系统要求 - **Java 版本*...
1.1 Solr的起源与发展:Solr最初由Yonik Seeley创建,后来成为Apache Lucene项目的一部分,发展至今已成为全球范围内广泛使用的搜索平台。 1.2 Solr的主要功能:Solr不仅提供全文索引,还支持多种数据类型(如日期、...
3.2 一个简单的例子 包括Solr Schema设计、构建索引和搜索测试。 3.3 搜索引擎的规划设计 3.3.1 定义业务模型 3.3.2 定制索引服务 3.3.3 定制搜索服务 3.4 搜索引擎配置 3.5 如何进行索引操作? 3.5.1 基本索引...