lucene3.0.0 field 用法 及其 Store Index方式
package com.txt.test2;
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.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
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;
import org.junit.Test;
//Field Store Index方式
public class FieldTest {
private String txt1 = "中华人 为人民服务";
private String txt2 = "中华人 为人民服务 学习雷锋好榜样";
//分词器
private Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
//索引目录
private File file = new File("f:"+File.separator+"indexDir9");
//创建索引
@Test
public void create () throws Exception{
Directory directory = new SimpleFSDirectory(file);
//使用覆盖 追加的方式建立索引
IndexWriter writer = new IndexWriter(directory, analyzer, MaxFieldLength.LIMITED);
Document document = new Document();
document.add(new Field("content", txt1, Store.YES, Index.ANALYZED));
writer.addDocument(document);
document = new Document();
//Index.NO Index.NOT_ANALYZED代表不分词
document.add(new Field("id","1",Store.YES,Index.ANALYZED));
document.add(new Field("title","txt2",Store.YES,Index.ANALYZED));
document.add(new Field("content",txt2,Store.YES,Index.NO));
writer.addDocument(document);
document = new Document();
document.add(new Field("content","哈哈哈",Store.YES,Index.NOT_ANALYZED));
writer.addDocument(document);
writer.close();
}
//查询
@Test
public void search() throws Exception{
Directory directory = new SimpleFSDirectory(file);
IndexSearcher searcher = new IndexSearcher(directory,true);
QueryParser parser = new QueryParser(Version.LUCENE_30, "content", analyzer);
Query query = parser.parse("哈哈哈");
TopDocs tdDocs = searcher.search(query, 100);
System.out.println("命中了多少次:"+tdDocs.totalHits);
if (tdDocs.scoreDocs != null) {
for (int i = 0; i < tdDocs.scoreDocs.length; i++) {
ScoreDoc sDoc = tdDocs.scoreDocs[i];
Document document = searcher.doc(sDoc.doc);
System.out.println("content: "+document.get("content"));
}
}else {
System.out.println("没有找到...");
}
}
//
@Test
public void reader() throws Exception{
Directory directory = new SimpleFSDirectory(file);
////直接读取索引库目录
IndexReader reader = IndexReader.open(directory);
//获取索引目录有多少条索引文档
int max = reader.maxDoc();
for (int i = 0; i < max; i++) {
Document document = reader.document(i);
System.out.println(document.get("content"));
}
}
}
分享到:
相关推荐
本文将深入探讨这一版本中的关键特性和使用方法。 一、Lucene 概述 Lucene 的核心功能包括文档的索引和查询。它允许开发者快速地对大量文本数据进行索引,构建出高效的全文搜索引擎。Lucene 提供了丰富的API,可以...
The new version is mostly a cleanup release without any new features. All deprecations targeted to be removed in version 3.0 were removed.
总的来说,Lucene 3.0.0入门DEMO是一个很好的起点,它可以帮助新手快速了解和实践Lucene的基本用法。通过实际操作,你可以更好地掌握Lucene的索引构建和搜索机制,从而在自己的项目中灵活运用。
总结来说,Lucene 3.0.0 和 IKAnalyzer 是构建中文全文检索系统的重要工具,它们结合使用可以提供高效的文本分析和搜索功能。对于需要处理大量中文文本的应用,如搜索引擎、内容管理系统或大数据分析平台,这些工具...
lucene3.0.0的学习资料,里边有lucene的jar包,具体的入门讲解:http://blog.csdn.net/lengyuhong/archive/2010/11/17/6014597.aspx
《Apache Lucene 3.0.0 源码解析》 Apache Lucene 是一个开源全文搜索引擎库,它为开发者提供了强大的文本搜索功能。在这个版本3.0.0的源码中,我们可以深入理解Lucene的核心机制和设计原理,这对于开发、优化以及...
最新的lucene api手册, 感觉看这个比一堆html方便。。。 支持开源
本篇将深入探讨Lucene 3.0.0版本的核心特性、设计理念以及使用方法。 一、Lucene概述 1.1 Lucene的基本概念 Lucene是一个纯Java库,用于索引和搜索大量文本数据。它提供了完整的搜索功能,包括分词、建立倒排索引...
《深入剖析Lucene 3.0.0:Java搜索引擎的核心技术》 在Java开发领域,Lucene是一个不可或缺的全文搜索引擎库,它为开发者提供了强大的文本分析、索引和搜索功能。这里我们关注的是Lucene 3.0.0版本,它是Lucene历史...
如果使用Lucene-3.0.0版本并在执行Web查询时报错,需要对`results.jsp`文件中的`QueryParser`构造方法进行更新,以适应Lucene的新版本。具体操作是在`results.jsp`文件中找到`QueryParser qp = new QueryParser(...
在深入探讨Lucene Field之前,我们先来了解一下Lucene是什么。Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发,用Java编写。它提供了一个简单但功能强大的API,允许开发者在应用程序中添加搜索功能。...
### Lucene.Net基本用法详解 #### 一、概述 Lucene.Net是.NET平台上的一款高性能全文搜索引擎库,基于Java版的Lucene开发而来。它提供了强大的文本搜索功能,支持复杂查询,广泛应用于文档检索、网站搜索等场景。...
5. 索引(Index): Lucene将文档的字段内容转换为倒排索引,以便快速定位到包含特定词汇的文档。 三、Lucene 3.0的主要改进 1. 倒排索引优化:引入了新的位图压缩技术,减少了磁盘空间占用,提高了查询速度。 2....
本文将重点探讨Lucene 3.3版本的基础功能及其与IK分词器3.2.8的集成使用方法。 一、Lucene 3.3基础功能 1. 文档索引:Lucene的核心功能之一是创建索引。在3.3版本中,开发者可以使用Document对象来构建文档,Field...
本文简要介绍了Lucene的基本概念及其使用方法。通过理解这些基本概念,你可以更好地掌握如何利用Lucene来构建高效的全文搜索引擎。Lucene的强大之处在于其灵活性和可扩展性,因此开发者可以根据具体的应用场景灵活地...
**Luke-Lucene Index Toolbox** Luke是一款强大的开源工具,专门用于浏览和分析Apache Lucene的索引。Lucene是Java开发的全文搜索引擎库,被广泛应用于各种搜索应用中,包括网站搜索、文档检索、数据挖掘等领域。...
org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store.Directory public abstract class Analyzer org.apache.lucene.analysis.Analyzer public final class ...
doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("content", "lucene works well", Field.Store.YES, Field.Index.TOKENIZED)); // 将文档添加到...