`
xixian
  • 浏览: 216416 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

lucene的检索方式

 
阅读更多
Lucene 简介
Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。

主要有以下几种方式检索

TermQuery

这个检索通常查找文档中唯一数据的字段(在更新索引时特别有用),一般这个字段使用Field.Index.NOT_ANALYZED方式保存索引(但并不意味着所有Field.Index.NOT_ANALYZED方式保存索引的字段有唯一值).

Term t = new Term("contents", "java");
Query query = new TermQuery(t);
//最终表达式就是contents:java

TermRangeQuery

范围检索,可以返回在两个单词之间的数据.
TermRangeQuery query = new TermRangeQuery("title", "d", "j", true, true);
//或者
TermRangeQuery query = new TermRangeQuery("title", "tim", "tom", true, true);
//最终表达式就是title:[d TO j]

NumericRangeQuery

数字范围检索,可以返回在两个数字直接的数据.在建索引时,该字段必须是以数字方式建的.并且创建时和检索时的使用的数字类型要相同.
NumericRangeQuery query = NumericRangeQuery.newIntRange("pubmonth",198805,198810,true,true);
//最终表达式就是pubmonth[198805 TO 198810]

PrefixQuery

前缀检索,就像数据库里的LIKE 'abc%'一样.普遍用于产品分类,不确定单词等.

Term term = new Term("category", "/technology/computers/programming");
//或者
Term term = new Term("title", "can");
PrefixQuery query =  new PrefixQuery(term);
//最终表达式就是title:can*


BooleanQuery

布尔检索,对两个Query进行逻辑运算.选项有BooleanClause.Occur.MUST, BooleanClause.Occur.SHOULD 和 BooleanClause.Occur.MUST_NOT.

TermQuery searchingBooks = new TermQuery(new Term("subject","search")); //A 检索subject中有search的
Query books2004 = NumericRangeQuery.newIntRange("pubmonth", 200401, ,200412,true, true); //B 检索出版时间范围
BooleanQuery searchingBooks2004 = new BooleanQuery(); //用于最终合并的检索
searchingBooks2004.add(searchingBooks, BooleanClause.Occur.MUST); //必须有A检索的结果
searchingBooks2004.add(books2004, BooleanClause.Occur.MUST);//必须有B检索的结果
//最终表达式就是+subject:search +pubmonth[200401 TO 200412]


PhraseQuery

短语检索,可以检索一个短语或词组.可以设置单词间隔距离,默认是1

PhraseQuery query = new PhraseQuery(); // 创建短语Query
query.setSlop(slop); // 设置间隔
for (int i=0; i < phrase.length; i++) {
query.add(new Term("field", phrase[i])); // 增加短语
}
//最终表达式就是title:"sloppy phrase"~5 ~5表示间隔


WildcardQuery

通配符检索,可以使用?,*这些通配符进行检索.?代表一个字符,*代表多个字符.(注意在单词开头使用通配符会严重影响效率)
Query query = new WildcardQuery(new Term("contents", "?ild*"));
//最终表达式就是contents:?ild*


FuzzyQuery

模糊检索,可以检索相似的词.比如wuzza和fuzzy.(模糊检索也会影响效率)

Query query = new FuzzyQuery(new Term("contents", "wuzza"));
//最终表达式就是contents:wuzza~0.5


MatchAllDocsQuery

匹配全部文档,顾名思义就是匹配全部文档的意思.
Query query = new MatchAllDocsQuery(field);
//最终表达式就是*:*


参考 http://www.cnblogs.com/rohan/archive/2010/09/02/1816278.html
分享到:
评论

相关推荐

    一种基于Lucene检索引擎的全文数据库的研究与实现

    ### 一种基于Lucene检索引擎的全文数据库的研究与实现 #### 1. 引言 随着信息技术的飞速发展和互联网的普及,大量的文本信息被数字化存储,这为信息检索带来了前所未有的挑战和机遇。传统的数据库管理系统(DBMS)...

    lucene检索小例子

    **Lucene检索小例子** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。这个"lucene检索小例子"程序展示了如何利用Lucene的强大功能来构建索引和执行搜索操作。Lucene的核心特性包括文本分析、...

    Lucene全文检索引擎

    **Lucene全文检索引擎** Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索引擎库,可以被集成到各种应用中实现全文检索功能。Lucene提供了完整的搜索功能实现,包括索引创建、文档存储、查询...

    Lucene全文检索案例

    **Lucene 全文检索案例** Lucene 是一个高性能、可扩展的信息检索库,由Apache软件基金会开发。它提供了一个简单但功能强大的API,用于在各种数据源中实现全文搜索。这个案例将深入探讨如何使用Lucene进行全文检索...

    Lucene检索数据库支持中文检索

    ### Lucene检索数据库支持中文检索 #### 一、Lucene简介与原理 ##### 1. Lucene概述 Lucene是一款高性能、全功能的文本搜索引擎库,由Java编写而成。其核心功能是为开发者提供构建搜索应用程序的基础框架。Lucene...

    使用Lucene对doc、docx、pdf、txt文档进行全文检索功能的实现 - 干勾鱼的CSDN博客 - CSDN博客1

    Apache Lucene 是一个开源的全文检索库,它提供了一种高效、可扩展的方式来构建全文搜索引擎。在Java开发中,Lucene被广泛用于实现文件的全文检索功能,包括对doc、docx、pdf、txt等常见格式文档的文本内容检索。在...

    lucene检索新闻数据演示

    【标题】"lucene检索新闻数据演示"涉及的是利用Apache Lucene这个开源全文搜索引擎库,对新闻数据进行索引和搜索的实践操作。Lucene是一个高性能、可伸缩的信息检索库,它提供了一个简单但功能强大的API,可以用于在...

    lucene检索文档、检索大数据量数据

    **Lucene 检索文档、检索大数据量数据** Lucene 是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它为开发者提供了一套高效、可扩展的工具,用于在大量数据中进行文本检索。Lucene的核心原理是基于倒排...

    Lucene检索文本,建立索引

    在这个场景中,我们将探讨如何利用Lucene来检索文本并建立索引,同时结合Struts框架构建一个Web程序。 首先,**Lucene** 是一个开源的Java库,它提供了完整的搜索功能,包括分词、索引创建、查询解析和结果排序。它...

    lucene全文检索全面教程

    **Lucene全文检索全面教程** Lucene是一款由Apache软件基金会开发的开源全文检索库,它为开发者提供了在Java应用程序中实现高性能、可扩展的全文检索功能。本教程将深入探讨Lucene的核心概念、架构和使用方法,帮助...

    lucene 全文检索

    **Lucene 全文检索详解** Lucene 是一个开源的全文检索库,由Apache软件基金会维护,它提供了高效的全文检索和分析功能。Lucene 广泛应用于网站搜索、文档检索、信息提取等领域,是Java开发人员实现全文搜索引擎的...

    基于Lucene的全文检索系统研究与开发

    ### 基于Lucene的全文检索系统研究与开发 #### 摘要与背景介绍 本文探讨了一种基于Jakarta Lucene构建的全文检索系统模型。相较于Google的站内检索及传统数据库检索方法,该模型展现出显著的优势,特别是在关键字...

    使用lucene全文检索数据库

    **使用Lucene全文检索数据库** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它是Java编写的,能够帮助开发者在各种应用程序中实现强大的全文检索功能。在这个项目中,我们将探讨如何利用Lucene ...

    Lucene文件检索实战项目

    Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为其内部全文检索子系统的...

    lucene全文检索简单索引和搜索实例

    《Lucene全文检索:简单索引与搜索实例详解》 Lucene是Apache软件基金会的开源项目,是一款强大的全文检索库,被广泛应用于Java开发中,为开发者提供了构建高性能搜索引擎的能力。在本文中,我们将深入探讨如何基于...

    lucene全文检索word2007

    **Lucene全文检索Word2007** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高效、可扩展的搜索框架,使得开发者能够在其应用程序中集成高级的搜索功能。在本示例中,我们讨论的是...

    lucene 3.6 检索文件 pdf word ppt excel txt html xml

    《Lucene 3.6 全文检索技术详解与应用》 Lucene 是一个高性能、全文本搜索引擎库,由Apache软件基金会开发。在版本3.6中,它提供了强大的文件检索功能,支持对多种文件类型的搜索,包括PDF、Word、PPT、Excel、TXT...

    lucene实现文件检索Demo

    lucene实现文件检索Demo,

Global site tag (gtag.js) - Google Analytics