正在学习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);
分享到:
相关推荐
本篇文章将围绕“data.rar学习lucene需要的数据文件”这一主题,深入探讨如何利用提供的数据文件学习并掌握Lucene的核心概念和技术。 首先,我们需要了解Lucene是什么。Lucene是一个高性能、全文本搜索库,它提供了...
视频详细讲解,需要的小伙伴...学习Lucene对日后学习它的下游技术产品ElasticSearch和Solr将会大有帮助。 系统的学习Lucene全文检索技术,全面掌握搜索原理和底层知识,为学习其他应用层面搜索技术打下坚实的基础。
在"一步一步跟我学习lucene(12)---lucene搜索之分组处理group查询"中,我们将重点关注如何利用Lucene实现这一高级搜索功能。 首先,Lucene是一个开源全文搜索引擎库,它为Java开发者提供了构建高效、可扩展的搜索...
对于初学者来说,"学习lucene和nutch爬虫代码"这个资料包应该包含了Lucene的基本代码示例和Nutch的爬虫代码。通过阅读和理解这些代码,你可以深入了解Lucene如何建立索引、执行搜索,以及Nutch如何抓取和处理网页。...
学习Lucene不仅需要理解其基本原理,如索引构建和查询执行,还需要熟悉如何结合实际需求选择合适的Analyzer。通过使用像Paoding Analysis这样的插件,可以增强Lucene在处理特定语言或文本类型时的性能。总之,掌握...
在深入探讨Lucene Field之前,我们先来了解一下Lucene是什么。Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发,用Java编写。它提供了一个简单但功能强大的API,允许开发者在应用程序中添加搜索功能。...
这个资料集可能包含了关于如何理解和使用Lucene的各种资源,特别是通过博主huanglz19871030在iteye上的博客文章链接,可以深入学习Lucene的核心概念和技术细节。 【标签】:“源码”和“工具”这两个标签暗示了这个...
《深入理解Lucene-2.0:...总之,学习Lucene-2.0涉及到对索引构建、搜索算法、排序机制的理解以及源码的阅读和分析。这不仅可以帮助开发者构建自己的全文检索系统,也为进一步探索信息检索领域的高级技术打下坚实基础。
通过学习Lucene源码,我们可以定制自己的分词器、查询解析器,甚至优化搜索算法,以满足特定的搜索需求。例如,在中文环境下,可以使用IK Analyzer或者jieba分词库来增强对中文的支持。 总结,Lucene作为Java平台上...
压缩文件包括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的重要环节。通过阅读源码,你可以了解其内部工作原理,包括分词器(Tokenizer)如何将文本分割成词元,索引器(IndexWriter)如何构建索引,以及搜索器(Searcher)如何执行查询。此外,你...
**LuceneDemo: 学习Lucene** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高效、可扩展的信息检索框架,使得开发者能够轻易地在自己的应用程序中添加全文搜索功能。LuceneDemo...
在学习Lucene时,重点应掌握如何创建索引、执行查询以及优化搜索性能。 接着,我们转向Compass。Compass是一个基于Lucene的全文搜索引擎框架,它将Lucene的功能与对象关系映射(ORM)框架相结合,如Hibernate和JPA...
通过学习 Lucene,开发者不仅可以掌握全文检索的基本原理,还能了解如何设计高效的索引结构,以及如何根据特定需求定制搜索功能。例如,你可以自定义查询分析器、实现删除操作、扩展排序机制,以及利用 Lucene 的 ...
首先,我们来看《lucene入门体会.doc》,这是作者在学习Lucene过程中的心得体会。通过这份文档,你可以了解到Lucene的基本概念,如索引的构建、查询解析以及结果排序等。作者分享了在实际操作中遇到的问题和解决方法...
学习Lucene的同时,你可能会遇到以下标签相关的知识点: - **倒排索引**:Lucene的核心数据结构,它存储每个词项的所有出现位置,而非文档的所有词项。这种设计有利于快速查找匹配文档。 - **分片与分布式搜索**:...
这些评价说明了本书的实用性和权威性,它不仅对于想要学习Lucene的读者来说是一本必备书,还对于希望了解搜索引擎机制的一般开发者也有很大帮助。 5. 本书提供了一个详细的蓝图来使用和定制Lucene,并给出了对信息...
总的来说,深入学习Lucene 3.5.0的源码,可以帮助开发者掌握全文检索的核心技术,了解其内部工作原理,并能灵活应用到自己的项目中。这份源码不仅适用于初学者,也是经验丰富的开发者的宝贵参考资料。通过阅读和理解...
12. **LuceneInAction源码**:这本书的源码包含了各种示例和实战案例,涵盖了从基础概念到高级特性的完整讲解,是学习Lucene的宝贵资源。 通过深入研究《Lucene in Action》的源码,开发者不仅可以理解Lucene的基本...
《Lucene 3.6.1 学习指南:深入解析源码与工具应用》 Lucene 是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发中。本学习资料主要聚焦于 Lucene 3.6.1 版本,这个版本在当时具有稳定性和功能性的良好...