`
kim_miao
  • 浏览: 190665 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

学习Lucene

阅读更多
正在学习lucene中,先贴一小段代码做个记念!
public class FirstDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("c:\\index");
		IndexWriter indexWriter = new IndexWriter(file, new StandardAnalyzer(),
				true);
		Document document = new Document();
		document.add(new Field("name", "word and word", Field.Store.YES,
				Field.Index.TOKENIZED));
		indexWriter.addDocument(document);
		indexWriter.close();

		IndexSearcher indexSearcher = new IndexSearcher("c:\\index");
		QueryParser queryParser = new QueryParser("name",
				new StandardAnalyzer());
		Query query = queryParser.parse("word");
		Hits hits = indexSearcher.search(query);
		System.out.println("查找到" + hits.length() + "个结果");
	}
}


1.以下是使用lucene2.0版本后要注意的:
Field没了Keyword、UnIndexed、UnStored、Text这几个静态成员,只能用
Field(String, String, Store, Index)。
Keyword对应Field.Store.YES, Field.Index.UN_TOKENIZED,
UnIndexed 对应Field.Store.YES, Field.Index.NO,
UnStored对应Field.Store.NO, Field.Index.TOKENIZED,
Text对应Field.Store.YES, Field.Index.TOKENIZED。

2.构建各种Query
TermQuery:词条查询
query = new TermQuery(new Term("name", "word1"));
BooleanQuery:与或查询
query = new BooleanQuery();
BooleanClause booleanClause1=new BooleanClause(query1,BooleanClause.Occur.SHOULD);
query.add(booleanClause1);

RangeQuery:范围查询

Term beginTime = new Term("time","200001");
Term endTime = new Term("time","200005");
query = new RangeQuery(beginTime, endTime, false);


PrefixQuery:前缀查询
Term term= new Term("name", "s");
query = new PrefixQuery(term);


PhraseQuery:多关键字搜索
Term word1 = new Term("content", "keep");
Term word2 = new Term("content","moving");
query = new PhraseQuery();
query.add(word1);
query.add(word2);
/*
对两个紧密相连的关键字,无论slop设置多少,Lucene总能找到它所在的文档,而对两个不
紧连的关键字,如果slop小于它们之间无关词的数量,那么则无法找到.其实,当两个关键字之间的无关词数小于等于坡度值时,总是可以被找到.
*/
query.setSlop(0);


FuzzyQuery:模糊查询
Term term= new Term("content", "da");
FuzzyQuery query = new FuzzyQuery(term);


WildcardQuery:通配符查询
//"*"代表0至多个字符,"?"代表1个字符
Term word1 = new Term("content", "*ever");
Term word2 = new Term("content", "wh?ever");
query = new WildcardQuery(word1);


分享到:
评论
1 楼 moxuan 2009-01-05  
有点简单,学习了!

相关推荐

    data.rar学习lucene需要的数据文件

    本篇文章将围绕“data.rar学习lucene需要的数据文件”这一主题,深入探讨如何利用提供的数据文件学习并掌握Lucene的核心概念和技术。 首先,我们需要了解Lucene是什么。Lucene是一个高性能、全文本搜索库,它提供了...

    超系统学习Lucene全文检索技术视频教程

    视频详细讲解,需要的小伙伴...学习Lucene对日后学习它的下游技术产品ElasticSearch和Solr将会大有帮助。 系统的学习Lucene全文检索技术,全面掌握搜索原理和底层知识,为学习其他应用层面搜索技术打下坚实的基础。

    一步一步跟我学习lucene(12)---lucene搜索之分组处理group查询

    在"一步一步跟我学习lucene(12)---lucene搜索之分组处理group查询"中,我们将重点关注如何利用Lucene实现这一高级搜索功能。 首先,Lucene是一个开源全文搜索引擎库,它为Java开发者提供了构建高效、可扩展的搜索...

    学习lucene和nutch爬虫代码

    对于初学者来说,"学习lucene和nutch爬虫代码"这个资料包应该包含了Lucene的基本代码示例和Nutch的爬虫代码。通过阅读和理解这些代码,你可以深入了解Lucene如何建立索引、执行搜索,以及Nutch如何抓取和处理网页。...

    学习lucene的

    学习Lucene不仅需要理解其基本原理,如索引构建和查询执行,还需要熟悉如何结合实际需求选择合适的Analyzer。通过使用像Paoding Analysis这样的插件,可以增强Lucene在处理特定语言或文本类型时的性能。总之,掌握...

    一步一步跟我学习Lucene源码之lucene的各种Field

    在深入探讨Lucene Field之前,我们先来了解一下Lucene是什么。Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发,用Java编写。它提供了一个简单但功能强大的API,允许开发者在应用程序中添加搜索功能。...

    lucene学习资料收集

    这个资料集可能包含了关于如何理解和使用Lucene的各种资源,特别是通过博主huanglz19871030在iteye上的博客文章链接,可以深入学习Lucene的核心概念和技术细节。 【标签】:“源码”和“工具”这两个标签暗示了这个...

    Lucene-2.0学习文档

    《深入理解Lucene-2.0:...总之,学习Lucene-2.0涉及到对索引构建、搜索算法、排序机制的理解以及源码的阅读和分析。这不仅可以帮助开发者构建自己的全文检索系统,也为进一步探索信息检索领域的高级技术打下坚实基础。

    Lucene学习源码.rar

    通过学习Lucene源码,我们可以定制自己的分词器、查询解析器,甚至优化搜索算法,以满足特定的搜索需求。例如,在中文环境下,可以使用IK Analyzer或者jieba分词库来增强对中文的支持。 总结,Lucene作为Java平台上...

    学习lucene用到的jar包集合

    压缩文件包括lucene-core-3.5.0.jar、mmseg4j-all-1.8.5.jar、mmseg4j-all-1.8.5-with-dic.jar、tika-app-1.0.jar、lukeall-3.5.0.jar、commons-io-2.1.jar。

    Lucene.net学习帮助文档

    源码分析是学习Lucene.net的重要环节。通过阅读源码,你可以了解其内部工作原理,包括分词器(Tokenizer)如何将文本分割成词元,索引器(IndexWriter)如何构建索引,以及搜索器(Searcher)如何执行查询。此外,你...

    LuceneDemo:学习Lucene

    **LuceneDemo: 学习Lucene** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高效、可扩展的信息检索框架,使得开发者能够轻易地在自己的应用程序中添加全文搜索功能。LuceneDemo...

    Lucene+compass学习资料

    在学习Lucene时,重点应掌握如何创建索引、执行查询以及优化搜索性能。 接着,我们转向Compass。Compass是一个基于Lucene的全文搜索引擎框架,它将Lucene的功能与对象关系映射(ORM)框架相结合,如Hibernate和JPA...

    Lucene简介.介绍

    通过学习 Lucene,开发者不仅可以掌握全文检索的基本原理,还能了解如何设计高效的索引结构,以及如何根据特定需求定制搜索功能。例如,你可以自定义查询分析器、实现删除操作、扩展排序机制,以及利用 Lucene 的 ...

    lucene 数据库

    首先,我们来看《lucene入门体会.doc》,这是作者在学习Lucene过程中的心得体会。通过这份文档,你可以了解到Lucene的基本概念,如索引的构建、查询解析以及结果排序等。作者分享了在实际操作中遇到的问题和解决方法...

    lucene学习-02

    学习Lucene的同时,你可能会遇到以下标签相关的知识点: - **倒排索引**:Lucene的核心数据结构,它存储每个词项的所有出现位置,而非文档的所有词项。这种设计有利于快速查找匹配文档。 - **分片与分布式搜索**:...

    lucene in action 第二版

    这些评价说明了本书的实用性和权威性,它不仅对于想要学习Lucene的读者来说是一本必备书,还对于希望了解搜索引擎机制的一般开发者也有很大帮助。 5. 本书提供了一个详细的蓝图来使用和定制Lucene,并给出了对信息...

    Lucene3.5源码jar包

    总的来说,深入学习Lucene 3.5.0的源码,可以帮助开发者掌握全文检索的核心技术,了解其内部工作原理,并能灵活应用到自己的项目中。这份源码不仅适用于初学者,也是经验丰富的开发者的宝贵参考资料。通过阅读和理解...

    lucene in action源码

    12. **LuceneInAction源码**:这本书的源码包含了各种示例和实战案例,涵盖了从基础概念到高级特性的完整讲解,是学习Lucene的宝贵资源。 通过深入研究《Lucene in Action》的源码,开发者不仅可以理解Lucene的基本...

    lucene3.6.1学习

    《Lucene 3.6.1 学习指南:深入解析源码与工具应用》 Lucene 是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发中。本学习资料主要聚焦于 Lucene 3.6.1 版本,这个版本在当时具有稳定性和功能性的良好...

Global site tag (gtag.js) - Google Analytics