`
randychao2008
  • 浏览: 15967 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

lucene3.0 学习总结

阅读更多
近日,一直在学习lucene。应用lucene3.0编写了一段简单的代码,实现了搜索引擎最基本的功能:索引和检索。但在进行检索的时候出现了问题:在把field加入到segment后(doc1.add(new Field("content","matter bird scan cancer scan matter",Store.YES,Index.NOT_ANALYZED));),明明有两个"scan",可是在检索的时候返回的hits只有一个,请问为什么?
哪位好心人能帮我解决一下,我是个初学者,望多指教,在此拜过。





package document;

import java.io.File;
import java.io.IOException;

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.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TopScoreDocCollector;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;

public class fileDoc {
private Directory index_dir = null;
private String index_path = "c:\\index";
private IndexWriter write = null;
private IndexSearcher indexSearch = null;
public fileDoc() throws CorruptIndexException, LockObtainFailedException, IOException{
File file = new File(index_path);
index_dir = SimpleFSDirectory.open(file);//一般用SimpleFSDirectory创建索引目录
write = new IndexWriter(index_dir,new StandardAnalyzer(Version.LUCENE_30),true,MaxFieldLength.LIMITED);
indexSearch = new IndexSearcher(index_dir);
}

@Test
public void createIndex() throws CorruptIndexException, IOException{
//往哪儿建立索引
Document doc1 = new Document();
doc1.add(new Field("content","matter bird scan cancer scan matter",Store.YES,Index.NOT_ANALYZED));
doc1.add(new Field("title","doca",Store.YES,Index.ANALYZED));

write.addDocument(doc1);

write.close();//只有调用了close方法后,索引器才会将存放于内存中的所有内容写入磁盘,并关闭输出流。否则索引目录下将只有segment文件

}
@Test
public void search() throws CorruptIndexException, IOException, ParseException{
//生成Query对象
Query query = new BooleanQuery();
String key1 = "scan";

//检索
QueryParser queryParser = new QueryParser(Version.LUCENE_30, "content", new StandardAnalyzer(Version.LUCENE_30));
query = queryParser.parse(key1);
TopScoreDocCollector collector = TopScoreDocCollector.create(100, true);//有序排列
indexSearch.search(query, collector);
System.out.println("查询到该关键词有:"+collector.getTotalHits()+"个");

}
}
2
3
分享到:
评论
2 楼 randychao2008 2011-03-01  
谢谢1楼的回复,这个问题我想明白了。
如果我想返回每个索引文档内包含的某个单词的个数,改怎么做呢,lucene3.0 API提供有这样的类吗?
1 楼 hu437 2011-02-28  
他返回的hits是按文档来计算的

你doc1.add(new Field("content","matter bird scan cancer scan matter",Store.YES,Index.NOT_ANALYZED)); 这只是一个文档,所以当然返回的是一个hits

你这个里面是有两个scan 但是这个分词后叫作词元(terms)

相关推荐

    lucene3.0庖丁+索引搜索程序

    总结,Lucene3.0是Java世界中不可或缺的全文检索工具,它的索引构建、查询处理和结果排序机制为我们提供了高效且灵活的搜索功能。通过深入学习其内部工作原理,结合具体的代码实践,开发者可以更好地利用Lucene3.0...

    lucene3.0资料包

    总结,Lucene3.0是全文检索领域的一个强大工具,其索引构建、分词、查询解析、搜索算法等功能在当时具有很高的技术水平,并且具有高度的灵活性和扩展性。通过深入学习和应用Lucene3.0,开发者可以构建出高效、智能的...

    lucene3.0 search

    总结,Lucene 3.0作为一款强大的全文检索库,其索引和搜索机制是构建高效搜索引擎的关键。通过理解并掌握这些核心技术,开发者可以灵活地应用于各种信息检索场景,实现高效、准确的信息匹配。同时,MySearch项目为...

    关于全文检索的文章(使用技术Lucene3.0)

    尽管现在已经有了更新的版本,但3.0仍然具有重要的学习价值,因为它奠定了后续版本的基础。Lucene 3.0支持多种文件格式,如倒排索引,提供高效的搜索功能,并且易于集成到各种应用程序中。 **倒排索引** 倒排索引...

    lucene3.0基础实例

    总结,Lucene 3.0为我们提供了一套完整的文本检索解决方案。通过理解并实践上述基础实例,我们可以快速上手,并进一步探索更高级的特性,如多字段搜索、模糊查询、短语查询等。在实际开发中,结合源码学习和使用相关...

    Lucene 3.0 原理与代码分析PDF

    Lucene学习总结之一:全文检索的基本原理 Lucene学习总结之二:Lucene的总体架构 Lucene学习总结之三:Lucene的索引文件格式(1) Lucene学习总结之三:Lucene的索引文件格式(2) Lucene学习总结之三:Lucene的...

    基于lucene3.0的搜索器源程序

    总结,基于Lucene 3.0的搜索器源程序为企业级的全文检索应用提供了基础,它不仅可以帮助开发者快速构建高效的搜索功能,还支持在Web环境中部署,通过用户友好的界面提供交互式搜索体验。通过深入学习和实践,我们...

    Lucene3.0增删改查和关键字高亮实例

    在这个“Lucene3.0增删改查和关键字高亮实例”项目中,我们将深入理解如何利用Lucene 3.0版本进行索引构建、文档的增删改查操作,并学习关键字高亮显示的实现方法。 首先,我们要了解**创建索引**的基本流程。在...

    Lucene3.0原理与代码分析完整版.docx

    在Lucene学习总结之二中,我们看到,Lucene的核心组件包括Analyzer(分析器)、Document(文档对象)、Field(字段)、IndexWriter(索引写入器)和Searcher(搜索器),它们协同工作以实现高效的信息检索。...

    Lucene3.0 Demo

    **Lucene 3.0 概述** Lucene 是一个高性能、全文检索库,由 Apache 软件基金会开发并维护。它是一个开源项目,提供...虽然Lucene的API可能有一定的学习曲线,但一旦掌握,它将为你的应用程序带来出色的全文搜索体验。

    传智播客Lucene3.0_精品课程

    通过学习Lucene 3.0,我们可以深入了解全文检索的基本原理和技术细节,掌握如何利用Lucene为自己的系统添加全文检索功能,从而提高数据检索的效率和准确性。这对于现代网站和应用程序来说是非常有价值的技能。

    lucene3.0入门

    Lucene 3.0 版本是其历史上的一个重要里程碑,虽然现在已经有了更新的版本,但对于初学者来说,它仍然提供了丰富的学习材料,让我们一起深入探索这个入门级的搜索引擎开发之旅。 一、Lucene 的核心概念 1. 文档...

    Lucence3.0学习

    总结来说,Lucene 3.0是一个强大的全文检索库,通过深入学习其源码,我们可以了解到其索引和搜索的核心原理,而配合相关工具,如Luke和Nutch,能够更高效地管理和调试索引,进一步提升搜索质量。同时,掌握实战技巧...

    Lucene_3.0_原理与代码分析

    ### Lucene 3.0 原理与代码分析 #### 一、全文检索基本原理 全文检索(Full-text Search)是一种从非结构化文本中...通过深入学习Lucene的工作原理,可以帮助开发者更好地利用这一强大的工具来构建高效的搜索应用。

    Lucene in Action 2nd

    ### Lucene in Action 第二版 – Apache Lucene 3.0 深度解析 ...通过学习本书,读者不仅可以掌握如何使用 Lucene 构建高效的搜索应用,还能深入了解其内部工作机制,为进一步定制和优化打下坚实基础。

    Lucene in action 第二版 英文版

    《Lucene in Action 第二版》是一本针对Apache Lucene 3.0版本的深入解析与实战指南。从书名可以看出,本书旨在帮助读者通过实际操作掌握Lucene的核心功能和技术细节,尤其对于从3.0版本开始的重大变化进行了详细...

    LUCENE IN ACTION

    - **Lucene 3.0**: 本书涵盖了Lucene 3.0版本的特性。 - **详尽的API讲解**: 提供了丰富的代码示例和清晰的解释,帮助读者理解Lucene的API。 - **实践经验分享**: 作者们都是Lucene的核心贡献者,书中包含了他们在...

    Lucene.in.Action.2nd.Edition.pdf

    - **版本**:本书覆盖的是 Apache Lucene 3.0 版本,这是 Lucene 发展过程中的一个重要里程碑。 - **应用范围**:Lucene 可广泛应用于各类项目中,无论是企业级应用还是个人项目,都能有效提升信息检索能力。 #### ...

    lucene-3.0.3-src.zip

    总结,Lucene 3.0.3作为一款开源的全文检索库,其源码的深入研究有助于开发者掌握全文搜索的核心技术,提高开发效率,构建更高效、更个性化的搜索引擎。通过对源码的分析,我们不仅可以学习到搜索引擎的基本原理,还...

Global site tag (gtag.js) - Google Analytics