文档章节

lucene搜索方式(query类型)

无聊的人们啊
 无聊的人们啊
发布于 2012/07/12 10:16
字数 791
阅读 271
收藏 6
点赞 0
评论 0

Lucene有多种搜索方式,可以根据需要选择不同的方式。

1、词条搜索(单个关键字查找)

     主要对象是TermQuery

     调用方式如下:

Term term=new Term(字段名,搜索关键字);
Query query
=new TermQuery(term);
Hits hits
=searcher.search(query);

 

2、组合搜索(允许多个关键字组合搜索)

     主要对象是BooleanQuery

     调用方式如下:

 


Term term1=new Term(字段名,搜索关键字);
TermQuery query1
=new TermQuery(term1);

Term term2
=new Term(字段名,搜索关键字);
TermQuery query2
=new TermQuery(term2);

BooleanQuery booleanquery
=new BooleanQuery();
booleanquery.add(query1,参数)
booleanquery.add(query2,参数)

Hits hits
=searcher.search(booleanquery);

此方法中的核心在BooleanQuery的add方法上,其第二个参数有三个可选值,对应着逻辑上的与或非关系

参数如下:

BooleanClause.Occur.MUST                必须包含,类似于逻辑运算的与

BooleanClause.Occur.MUST _NOT       必须不包含,类似于逻辑运算的非

BooleanClause.Occur.SHOULD           可以包含,类似于逻辑运算的或

这三者组合,妙用无穷。

 

3、范围搜索(允许搜索指定范围内的关键字结果)

     主要对象是RangeQuery

     调用方式如下: 

Term term1=new Term(字段名,起始值);

Term term2
=new Term(字段名,终止值);

RangeQuery rangequery
=new RangeQuery(term1,term2,参数);

Hits hits
=searcher.search(rangequery);

此方法中的参数是Boolean类型的,表示是否包含边界 。

true 包含边界

false不包含边界


 

4、前缀搜索(搜索起始位置符合要求的结果)

     主要对象是PrefixQuery

     调用方式如下:

Term term=new Term(字段名,搜索关键字);
PrefixQuery prefixquery
=new PrefixQuery (term);
Hits hits
=searcher.search(prefixquery);

 

5、短语搜索(根据零碎的短语组合成新的词组进行搜索)

     主要对象是PhraseQuery

     调用方式如下:

Term term1=new Term(字段名,搜索关键字);
Term term2
=new Term(字段名,搜索关键字);

PhraseQuery phrasequery
=new PhraseQuery();
phrasequery.setSlop(参数);
phrasequery.add(term1);
phrasequery.add(term2);
Hits hits
=searcher.search(phrasequery);

其中setSlop的参数是设置两个关键字之间允许间隔的最大值。

6、多短语搜索(先指定一个前缀关键字,然后讲其他的关键字加在此关键字之后,组成词语进行搜索)

     主要对象是:MultiPhraseQuery

     调用方式如下:

Term term=new Term(字段名,前置关键字);
Term term1
=new Term(字段名,搜索关键字);
Term term2
=new Term(字段名,搜索关键字);


MultiPhraseQuery multiphrasequery
=new MultiPhraseQuery();

multiphrasequery.add(term);
multiphrasequery.add(
new Term[]{term1,term2});

Hits hits
=searcher.search(multiphrasequery);

 

7、模糊搜索(顾名思义)

     主要对象是:FuzzyQuery

     调用方式如下:

 

Term term=new Term(字段名,搜索关键字);
FuzzyQuery fuzzyquery
=new FuzzyQuery (term,参数);
Hits hits
=searcher.search(fuzzyquery);

此中的参数是表示模糊度,是小于1的浮点小数,比如0.5f

8、通配符搜索(顾名思义)

     主要对象是:WildcardQuery

     调用方式如下: 


Term term=new Term(字段名,搜索关键字+通配符);
WildcardQuery wildcardquery
=new WildcardQuery (term);
Hits hits
=searcher.search(wildcardquery);

 

其中的通配符分两种,即*和?

* 表示任意多的自负

?表示任意一个字符

 

9、正则表达式搜索(顾名思义)

     主要对象是:RegexQuery

     调用方式如下: 

 

Lucene 搜索种类很多。这里就介绍几个最常用的。其中TermQuery\BooleanQuery\RegexQuery功能最强大,最为常用。

本文转载自:http://www.cnblogs.com/falconfei/archive/2009/02/25/1398267.html

共有 人打赏支持
无聊的人们啊
粉丝 42
博文 39
码字总数 10488
作品 0
南开
程序员
Lucene5.5.2开发入门详解

一、 全文检索的概念 常见的全文检索 1) 在window系统中,可以指定磁盘中的某一个位置来搜索你想要得到的东西。这个功能是windows比较常用的功能。 2) 在eclipse中,帮助文档搜索:heltp 》h...

silence88
2016/12/22
59
0
Elasticsearch工作原理

一、关于搜索引擎 各位知道,搜索程序一般由索引链及搜索组件组成。 索引链功能的实现需要按照几个独立的步骤依次完成:检索原始内容、根据原始内容来创建对应的文档、对创建的文档进行索引。...

莫问viva
2016/05/15
3.6K
0
lucene 6.0 常用类与方法

1.目录 org.apache.lucene.store.Directory 指定索引所在目录。 org.apache.lucene.store.RAMDirectory 存放于内存中的目录。 org.apache.lucene.store.RAMDirectory.RAMDirectory(FSDirect......

OSC一霸
2016/07/12
207
0
Lucene教程详解

注明:本文是由本人在开发有关基于lucene资源检索系统时的一点总结,其中一部分是自己根据开发过程自己总结的,也有部分是摘自网络,因无法获取当时摘文的地址,所以在此没有写源地址。 转载...

长平狐
2012/11/12
1K
2
[转] 实战 Lucene,第 1 部分: 初识 Lucene

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

小败
2012/02/26
0
0
Lucene In Action 读书笔记(一)

简介 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和...

林俊龙
2013/09/04
0
1
实战 Lucene,第 1 部分: 初识 Lucene

本文首先介绍了 Lucene 的一些基本概念,然后开发了一个应用程序演示了利用 Lucene 建立索引并在该索引上进行搜索的过程。 朋 周登 (zhoudengpeng@yahoo.com.cn), 软件工程师 2006 年 4 月 ...

凡16
2013/09/27
0
0
lucene&solr-day1

全文检索课程 Lucene&Solr(1) 1. 计划 第一天:Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a) 创建索引 b) 查询索引 3、配置开发环境 ...

狂小白
2017/07/31
0
0
lucene全文检索概述 简介 整体知识

一,信息检索的过程简介 全文检索和数据库应用最大的不同在于:让最相关的头100条结果满足98%以上用户的需求 1,构建文本库 在开发功能前,一个信息检索系统需要做些准备工作,首先,必须要构...

晨曦之光
2012/04/11
620
0
Apache Lucene与Lucene.Net——全文检索服务器

lucene学习教程 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 2 ...

长平狐
2013/01/06
831
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python -re模块及正则表达式解析

传送门: https://blog.csdn.net/pipisorry/article/details/25909899 ps:上面文章中"命名分组"的语法格式不能执行。正确的如下: (?P<name>正则表达式) #name是一个合法的标识符...

一口今心
9分钟前
0
0
mybatis中session.getMapper方法源码分析

0开始代码AuthorMapper mapper = session.getMapper(AuthorMapper.class); 1 DefaultSqlSession类 @Override public <T> T getMapper(Class<T> type) { //最后会去调用MapperRegistry.getMap......

writeademo
17分钟前
0
0
spring cloud zuul网关的作用

zuul一般有两大作用,1是类似于Nginx的网址重定向,但zuul的重定向的一般是整个spring cloud里在Eureka注册中心的模块. zuul: ignored-services: '*' sensitiveHeaders: routes: ...

算法之名
17分钟前
8
0
java按比例之原图生成缩略图

package com.wxp.test; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import sun.......

恋码之子
27分钟前
1
0
SpringCloud 微服务 (十五) 服务容错 Hystrix

壹 工作中的微服务架构,某个服务通常会被多个服务调用或者多层调用完成需求,如果某个服务不可用,导致一个系统功能不可用或者服务直接没用了的情况,这种情况称为雪崩效应 有A服务调用B服务,B服...

___大侠
29分钟前
0
0
Spring框架中的设计模式(五)

Spring框架中的设计模式(五) 通过以前的4篇文章,我们看到Spring采用了大量的关于创建和结构方面的设计模式。本文将描述属于行为方面的两种设计模式:命令和访问者。 前传: Spring框架中的...

瑞查德-Jack
32分钟前
0
0
解决phpstorm运行很卡问题!

phpStorm一旦达到这个临界值,所有智能提示、自动补全都失效了 这TM就很尴尬了,顿时感觉自己就是个废人了,纯手写代码跟便秘一样 众所周知phpStorm基于JAVA,那么这个内存限制肯定跟JAVA的虚...

sjcehui2010
34分钟前
0
0
javascript前端AES加密解密

参考了一下网上的代码加上自已的一些想法,修改,key也可以是中文, 要引入一个aes.js的js文件。 html代码 <html> <head> <title>AES加解密</title> <meta http-equiv="Content-Type"......

oisan_
38分钟前
0
0
MacOS和Linux内核的区别

有些人可能认为MacOS和Linux内核有相似之处,因为它们可以处理类似的命令和类似的软件。甚至有人认为苹果的MacOS是基于linux的。事实上,这两个内核的历史和特性是非常不同的。今天,我们来看...

六库科技
42分钟前
0
0
Vue.js-自定义事件例子

自定义组件的 v-model 2.2.0+ 新增 一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value 特性用于不同的目的。m...

tianyawhl
46分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部