Lucene的简单使用:在进行检索的时候是需要原来已经创建了索引才能检索到需要的内容的。所以在使用Lucene的时候大体就是两个方面,建立索引和检索,其次就是一些不能的策略了!
1.建立索引
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class Writer {
public static void main(String args[]) throws IOException {
String indexDir = "E:\\index\\test";//索引存放的路径
String dataDir = "D:\\Backup\\Note";//这个是用来建立索引的数据源,此处是以一个一个的文件为例来建立索引的
Directory dir = FSDirectory.open(new File(indexDir));
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_31);//建立一个对应版本的分析器
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_31, analyzer);//这是用于在建立索引时配置信息的,默认是默认信息
IndexWriter indexWriter = new IndexWriter(dir, config);
File files[] = new File(dataDir).listFiles();
for (File file:files) {
Document doc = new Document();
Field field1 = new Field("fileName",file.getName(), Field.Store.YES, Field.Index.ANALYZED);
FileInputStream fis = new FileInputStream(file);
int len = fis.available();
byte[] bytes = new byte[len];
fis.read(bytes);
fis.close();
String content = new String(bytes);
Field field2 = new Field("content", content, Field.Store.YES, Field.Index.ANALYZED);
doc.add(field1);
doc.add(field2);
//现在流行的检索工具都是把每一个信息源看作一个Document来进行处理的
indexWriter.addDocument(doc);
indexWriter.optimize();
}
int docs = indexWriter.numDocs();
System.out.println("共索引了"+docs+"个文件!");
indexWriter.close();
}
}
2.进行检索
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
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.search.TopScoreDocCollector;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class Searcher {
public static void main(String args[]) throws IOException, ParseException {
String indexDir = "E:\\index\\test";
Directory dir = FSDirectory.open(new File(indexDir));
IndexSearcher indexSearcher = new IndexSearcher(dir);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_31);
// QueryParser queryParser = new QueryParser(Version.LUCENE_31, "content", analyzer);
QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_31, new String[] {"fileName","content"}, analyzer);
Query query = queryParser.parse("内 的 值");
TopScoreDocCollector collector = TopScoreDocCollector.create(3, true);//前面一个参数表示一次最多检索多少,这里检索的是永远从第一条开始
indexSearcher.search(query, collector);
TopDocs topDocs = collector.topDocs(2, 2);//第一个参数为从第多少个记录开始,第二个参数为每次取多少条记录
// TopDocs topDocs = indexSearcher.search(query, 10);
int totalHits = topDocs.totalHits;
System.out.println("totalHits:"+totalHits);
System.out.println();
ScoreDoc scoreDocs[] = topDocs.scoreDocs;
for (ScoreDoc scoreDoc:scoreDocs) {
float score = scoreDoc.score;
Document doc = indexSearcher.doc(scoreDoc.doc);
System.out.println("fileName:"+doc.get("fileName"));
// System.out.println("content:"+doc.get("content"));
System.out.println("score:"+score);
System.out.println();
}
indexSearcher.close();
}
}
分享到:
相关推荐
总的来说,Lucene的使用涉及了文本分析、索引构建、查询解析和结果返回等多个环节,通过这些库和工具,开发者可以构建出高效、精确的全文搜索引擎。而上述的jar包组合,提供了完成这些任务所需的基本组件。
**Lucene 3.1 使用教程** Lucene 是一个高性能、全文检索库,由Apache软件基金会开发并维护。它提供了一个简单但功能强大的API,使得开发者可以轻松地在应用程序中集成全文检索功能。本教程主要关注的是Lucene 3.1...
以上就是关于“Lucene索引的简单使用”的详细介绍,包括其核心概念、创建和查询索引的步骤以及一些高级特性。希望对你理解和应用Lucene有所帮助。在实际开发中,可以根据需求选择合适的Analyzer,优化索引策略,以...
【使用Lucene进行简单的开发】 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了完整的搜索功能,包括分析、索引和搜索文本。在这个教程中,我们将了解如何利用Lucene进行简单的开发。 ### 一...
标题“lucene简单介绍及solr搭建使用”涉及了两个主要的开源搜索技术:Lucene和Solr。Lucene是Java开发的一个全文检索库,而Solr则是基于Lucene构建的企业级搜索平台,提供了更高级的功能和管理界面。 **Lucene简介...
一个简单的Lucene应用实例是搜索文本文档。例如,开发者可以创建一个索引目录,然后指定一个包含文本文档的数据目录。使用`Analyzer`(如CJKAnalyzer)对文本进行分析,通过`IndexWriter`将文档内容写入索引。这样,...
以下是一个简单的示例代码,演示了如何使用Lucene搜索包含关键词"lucene"的文档: ```java public class TxtFileSearcher { public static void main(String[] args) throws Exception{ String queryStr = ...
在"spring-lucene简单项目"中,我们将学习如何配置和使用Lucene来索引和检索数据。 项目开始时,你需要在Spring配置文件中声明Lucene的相关bean,如Analyzer(分析器)、Directory(存储索引的目录)和IndexWriter...
IK分词器是一款广泛应用于Java开发中的中文分词工具,主要为Lucene、Elasticsearch等全文搜索引擎提供支持。在本教程中,我们将探讨如何将IK分词器集成到Lucene 4.5版本中,以提升中文文本处理的效率和准确性。 ...
### Lucene的使用与优化 #### 一、Lucene简介 ...此外,还提供了一个简单的示例代码,帮助读者理解如何使用Lucene进行文档索引和搜索。希望这些知识点能够帮助大家更好地理解和使用Lucene这一强大的搜索引擎库。
这个"lucene3.0.3搜索的使用示例"压缩包文件很可能是为了帮助用户理解并学习如何在项目中应用Lucene 3.0.3版本的功能。 在Lucene 3.0.3中,主要包含了以下核心概念和知识点: 1. **索引(Indexing)**:这是Lucene...
标题与描述:“Lucene简单入门程序实例”这一标题与描述明确指出文章将引导读者通过一个实际的示例来了解和掌握Lucene的基本操作。Lucene是一个高性能、全功能的文本搜索引擎库,它允许用户对文档进行索引和搜索。本...
Lucene的目标是为软件开发人员提供简单易用的工具包,方便地在目标系统中实现全文搜索功能或构建一个完整的全文搜索引擎。 Lucene的主要优点包括: 1. 索引文件格式独立于应用平台:Lucene定义了一套以8位字节为...
Lucene入门与使用,非常简单,适合入门
**Lucene的简单使用流程** 1. **创建Analyzer**: 根据需求选择或自定义分析器,例如使用StandardAnalyzer处理英文文本。 2. **创建Document**: 定义要索引的字段和内容,例如`document.add(new TextField("content...
本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,Lucene 是一个高性能、全功能的文本分析库,主要用于信息检索。它提供了索引和搜索大量文本数据的能力,包括分词、分析、存储和搜索...
本篇文章将深入探讨如何在B/S(浏览器/服务器)架构下利用Lucene实现一个简单的搜索引擎实例。 首先,我们需要了解Lucene的核心概念。Lucene提供了一套完整的文本检索框架,包括索引构建、查询解析、评分以及结果...
在Lucene中,查询可以是简单的关键词,也可以是复杂的布尔表达式。查询解析器将用户输入转化为 Lucene 可以理解的Query对象,然后执行查询,返回匹配的文档集合。在本示例中,我们将看到如何使用这些功能并对比不同...