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
分享到:
相关推荐
《Lucene4.0实例详解》 Lucene是一款强大的全文搜索引擎库,被广泛应用于各种信息检索系统中。这里我们主要探讨的是Lucene 4.0版本的实例应用,旨在通过实际操作来理解其核心概念和功能。 一、Lucene基础 Lucene ...
《深入理解Lucene4.0与IKAnalyzer2012:构建高效全文检索系统》 在信息化时代,数据量的快速增长使得高效的全文检索技术变得至关重要。Lucene作为Apache软件基金会的一个开源项目,是Java领域内最著名的全文搜索...
### Lucene4.0 IK分词器使用概览 #### IKAnalyzer:中文分词利器 IKAnalyzer是一款基于Java开发的开源中文分词工具包,自2006年首次发布以来,历经多个版本的迭代,已成为业界广泛认可的中文分词解决方案。其最初...
《Lucene 4.0:构建搜索引擎的基本操作详解》 Lucene 4.0是一款强大的全文搜索引擎库,广泛应用于各种信息检索系统。本教程通过一个简单的demo,将深入讲解如何利用Lucene 4.0创建索引、删除索引以及进行有效搜索。...
这个 "LuceneDemo" 示例项目很可能是包含了上述过程的简单实现,包括如何初始化 `Directory`, 创建 `Analyzer`, 实例化 `IndexWriter` 和 `IndexSearcher`,以及构建和执行查询。通过学习这个项目,开发者可以快速...
支持lucene4.0的paoding分词
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包 ",意味着这个压缩包包含了一个与Lucene4.0兼容的IK Analyzer 2012FF_hf1版本的Java档案(jar包)。这个jar包可以被Java应用或者全文检索服务(如Solr或...
"IK Analyzer 2012FF_hf1_IK分词lucene4.0_源码" 提供的是IK分词器的一个特定版本,适用于Lucene 4.0,这在当时是一个相对老但仍然被一些项目依赖的版本。 分词是中文信息处理的关键步骤,它将连续的汉字序列分割成...
应用Lucene4.0版本时,发现用现有的IKAnalyzer2012.jar会有冲突,然后找到官网下载最新的IKAnalyzer2012源码,打包jar后解决
**Lucene 3.0 入门实例** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了完整的搜索功能,包括索引、查询解析、排序以及高级的文本分析能力。在 Lucene 3.0 版本中,开发者可以利用其强大...
《Lucene 3.6 入门实例教程》是一份专为初学者设计的指南,旨在帮助用户快速掌握Apache Lucene 3.6版本的基本概念和应用。Lucene是一个高性能、全文检索库,广泛用于构建搜索功能强大的应用程序。这份教程通过完整的...
**Lucene 3.0 入门实例及关键知识点** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它为开发者提供了在应用程序中实现文本搜索功能的强大工具。本实例主要针对 Lucene 3.0 版本,这个版本虽然...
IK Analyzer不仅支持基本的分词功能,还能够与流行的全文检索框架Apache Lucene紧密集成,尤其在提供的版本中,它已经兼容Lucene 4.0。 IK Analyzer的核心思想是通过词典分词和文法分词相结合的方式,以达到更好的...
【Lucene 入门教程】 Lucene 是一个由Apache软件基金会开发的开源全文检索引擎工具包,它并非一个完整的搜索引擎,而是提供了一个强大的架构,允许开发人员轻松地在他们的应用程序中集成全文检索功能。Lucene 支持...
这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解: 1. **Lucene的架构**: Lucene的核心组件包括文档(Document)、字段(Field)、索引...
**Lucene 全文搜索引擎实例:Java Lucene 实例** Lucene 是 Apache 软件基金会的一个开源项目,它提供了一个高性能、可扩展的信息检索库。这个实例将深入讲解如何在 Java 中使用 Lucene 来创建索引并执行各种搜索...
**Lucene索引器实例详解** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个高级的、灵活的、可扩展的接口,使得开发者能够轻松地在应用程序中实现全文...
《Lucene使用代码实例之搜索文档》 Lucene是一个高性能、全文检索库,它提供了强大的文本分析和索引功能,广泛应用于搜索引擎开发和其他需要高效文本处理的场景。本篇文章主要面向初学者,通过实例详细解释如何使用...