lucene搜索方式(query类型)

Lucene应用实战(四)——Lucene搜索的两种方式 前言 本文我们来对Lucene具体如何进行数据的搜索,进行详细的介绍。 环境准备 我们直接使用在 Lucene应用实战(二)——Field域的使用及索引库的维护 中的应用代码案例。 因为索引和存储两者是分开的,对于某一个字段我们可以建立索引,但是不存储,我们依然可以对此字段进行搜索,但是因为我们没有存储,所以我们搜索出来的结果中不显示此字段的内容。 本文为了结果的展示明显,我们将“desc“属性进行索引并且存储。 搜索结果TopDocs类 Lucene搜索结果可通过TopDocs遍历,TopDocs类提供了 阅读详情

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

     调用方式如下:www.2cto.com

 

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

Lucene学习总结之二:Lucene的总体架构 Lucene总的来说是: 一个高效的,可扩展的,全文检索库。 全部用Java实现,无须配置。 仅支持纯文本文件的索引(Indexing)和搜索(Search)。 不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。 在Lucene in action中,Lucene 的构架和过程如下图, 说明Lucene是有索引和搜索的两个过程,包 阅读详情

相关推荐

Lucene中各种Query的用法与场景分析

Lucene中各种Query的用法与场景分析 1.背景介绍 在现代信息时代,数据已经成为了企业和个人的重要资产。随着数据量的不断增长,有效地检索和利用这些数据变得至关重要。Apache Lucene是一个高性能、全功能的搜索引擎库,它提供了强大的索引和搜索功能,可以帮助我们快速地

AI大模型应用之禅 1111

Lucene中的TermQuery

刚刚在学习创建搜索的时候写到了 //建立搜索单元, SearchType代表要搜索的Filed, searchKey代表关键字 Term t = new Term(searchType, searchKey); //由Term生成一个Query Query q = new TermQuery(t); tu

杨鑫newlife的专栏 3632

有限元缺陷:剪切锁死

有限元缺陷:剪切锁死

wsxww11的博客 5186

lucene整理4 -- 各种Query

1. 各种Query 1.1. 概述 query.toString()查看原子查询 1.2. 使用特定的分析器搜索 [code="java"]IndexSearcher searcher = new IndexSearcher(path ); Hits hits = null; Query query = null; QueryParser parser =ne...

xiarilian12的博客 573

字节跳动已上岸测试工程师的面试经验

这个时候发面经已经有点晚了,所以现在打算让这篇面经主要面向即将秋招的童鞋,当然现在还在春招的童鞋也可以看哈,我和大家一起聊聊关于测试的二三事。   一、测试工程师的工作是什么?   测试工程师简单点说就是找bug,然后反馈给开发人员,不要小看这个工作。   首先很明显的bug开发人员有时候自己就能找到,测试人员要有比开发人员更加全面的想法才能找到深层次的问题点,   其次,要端正一个态度就是测试人员不是一个电脑小白,相反国外顶级的测试开发工程师同时也是顶级的开发工程师甚至更厉害,所以作为一个测试工程师一定要

m0_60745607的博客 2933

QGIS中高效处理CAD数据的两种实用技巧

本文详细解析了在QGIS中高效处理CAD数据的两种核心方法。针对DWG/DXF文件在QGIS中直接打开失败的问题,介绍了使用QGIS内置数据导入管理器进行标准化转换的流程,并重点推荐了功能更强大的Another DXF Importer插件,以更好地保留文字、块属性等复杂信息。文章对比了两种方法的优劣与适用场景,并提供了坐标系设置、中文乱码等常见问题的避坑指南,帮助用户根据数据需求选择最佳导入策略。

weixin_28363123的博客 117

Lucene查询语法详解

Lucene提供了丰富的API来组合定制你所需要的查询器,同时也可以利用 Query Parser提供的强大的查询语法解析来构造你想要的查询器。本文章详细的介绍了Lucene的查询语法。通过Java语法分析器把一个查询字符串解析成 Lucene的查询器。在你选择使用Query Parser前,请考虑以下事项:如果你打算在程序中拼接查询语法串然后再利用Query Parser转换,那么强烈建议你利用...

zfsn7722483的专栏 1320

【腾讯小龙虾 WorkBuddy 专栏 03】技能(Skills)制作全教程!自定义技能编写、导出分享、导入使用一步到位

🔥腾讯AI智能体WorkBuddy自定义技能全攻略 本文为零基础用户提供WorkBuddy自定义技能的完整教程,涵盖技能概念、编写规范到实操全流程。核心内容包括: 技能本质:标准化任务指令模板,可固化重复操作流程 三大价值:一键执行重复任务/跨设备共享/降低使用门槛 实操演示:以"桌面文档自动分类"为例,分步讲解编写、测试、导出 共享方案:支持单技能/批量导出,通过任意渠道传输分享 导入指南:3秒完成他人技能加载,并提供常见问题解决方案 高阶优化:增加异常处理、版本管理等提升技能普适性

AI人人懂 2953

Lucene:按词条搜索—TermQuery

转载自:http://book.51cto.com/art/200805/72684.htm 11.4  构建各种Query 搜索流程中的第二步就是构建一个Query。下面就来介绍Query及其构建。 当用户输入一个关键字,搜索引擎接收到后,并不是立刻就将它放入后台开始进行关键字的检索,而应当首先对这个关键字进行一定的分析和处理,使之成为一种后台可以理解的形式,只有这样,才能提高检索的效

lizhengnanhua的专栏 1771

多标签图像分类:标签依赖关系建模的最新论文解读与实战应用

多标签图像分类:标签依赖关系建模的最新论文解读与实战应用 ,人工智能,计算机视觉,大模型,AI,本文解读了最新相关论文,包括基于图神经网络(GCN)的ML-GCN方法,通过构建标签相关矩阵建模依赖关系;区域潜在语义依赖的RLSD模型,定位关键区域并利用RNN建模语义依赖;以及语义图表示学习的SSGRL框架,结合语义解耦与交互模块。通过实战应用,展示了基于PyTorch的ML-GCN模型实现,包括图像特征提取、标签依赖建模及训练评估流程,为多标签图像分类提供了有效解决方案。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

输入电压采集上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, 由于二极 管的正向导通特性, 用户反接电源时亦不会烧坏后级电路。图中 R8、R9 组成分压电路, 由单片机 AD 采集 IO 口 P14 采集 AD 值, 并由计算公式电压 =133300(AD/4096)mV;

Naiva的博客 1994

【Lucene4.8教程之六】QueryParser与Query子类:怎样生成Query对象

版权声明:本文为博主原创文章。转载请注明来自http://blog.youkuaiyun.com/jediael_lu/ https://blog.youkuaiyun.com/jediael_lu/article/details/33288793 ...

weixin_30374009的博客 167

【华为OD机试】贪吃蛇(python, java, c++, js)

贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。 下面让我们来完成贪吃蛇游戏的模拟。 给定一个NM的数组arr,代表NM个方格组成的版图,贪吃蛇每次移动一个方格。 若arr[i][j] == H,表示该方格为贪吃蛇的起始位置; 若arr[i][j] == F,表示该方格为食物, 若arr[i][j] == E,表示该方格为空格。 贪吃蛇初始长度为1,初始移动方向为向左。

A_D_I_D_A_S的博客 541

简介Lucene2.0中Query

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34260991的博客 123

习题加餐4. 冒险者工会

这个问题通过贪心算法解决,展示了贪心算法在解决一些优化问题中的强大能力。关键在于如何识别贪心选择的性质,并通过数学证明确保这种方法能够达到全局最优解。通过对问题的深入理解和逻辑推理,我们可以设计出有效的算法来解决问题,同时也需要注意代码实现中的细节,如排序和双指针的使用,以确保算法的效率和正确性。贪心算法的应用这个问题展示了贪心算法在实际问题中的应用。贪心算法通过在每一步选择当前最优的解决方案,期望最终达到全局最优解。该问题中,每次选择能力最接近但足以完成最难任务的冒险者,就是贪心选择的体现。

tang7mj的博客 1349

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

从入门到精通:Kibana搜索语法全解析——Lucene查询与DSL进阶实战指南

在数据驱动决策的时代,快速准确地从海量日志和指标中定位关键信息是每个运维、开发和数据分析人员的核心技能。Kibana作为Elastic Stack的可视化门户,提供了强大的搜索功能,但大多数用户仅停留在基础关键词搜索阶段。本文将系统讲解Lucene查询语法与Elasticsearch Query DSL(领域特定语言)的使用方法,帮助你从"大海捞针"式的低效搜索升级为精准高效的数据分析专家。读完本...

gitblog_00254的博客 509

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Elasticsearch排序以及自定义评分的所有方法

1.elasticsearch相关性评分,默认使用lucene内置评分系统,公式大致如下: lucene的评分机制 https://www.cnblogs.com/yjf512/p/4860134.html 2.elasticsearch5.0以下支持搜索前评分,具体位置忘记了。//todo 现在推荐在查询的时候评分。 3.查询时候评分有哪些方式: 1.term boost 2.functi...

u014645192的博客 2178

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ElasticSearch 简介

ElasticSearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎。

好记性不如烂笔头 1674

基于lucene的案例开发:Query查询

在Lucene索引的搜索过程中,构建Query对象是一个十分重要的过程,在这篇博客中,我们将重点介绍几种常用的Query子类:QueryParser、MultiFieldQueryParser、TermQuery、PrefixQuery、PhraseQuery、WildcardQuery、TermRangeQuery、NumericRangeQuery、BooleanQuery

小鸡慢慢的专栏 4806

基于lucene的案例开发:搜索索引

通过简单的事例介绍了如何去搜索Lucene索引,同时还介绍了索引搜索过程中的几个核心类:Directory、DirectoryReader、IndexSearcher、Analyzer、Query、TopDocs

小鸡慢慢的专栏 3174

Grafana/Kibana搜索语句-Lucene查询语法详解(Lucene query syntax)

Lucene提供了丰富的API来组合定制你所需要的查询器,同时也可以利用Query Parser提供的强大的查询语法解析来构造你想要的查询器。本文章详细的介绍了Lucene的查询语法。通过Java语法分析器把一个查询字符串解析成 Lucene的查询器。在你选择使用Query Parser前,请考虑以下事项: 如果你打算在程序中拼接查询语法串然后再利用Query Parser转换,那么强烈建议你利用...

山东梅长苏 1万+

Lucene 搜索

Lucene的常用检索类 1、IndexSercher:检索操作的核心组件,用于对IndexWriter创建的索引执行,只读的检索操作,工作模式为接受Query对象而返回ScoreDoc对象。 2、Term:检索的基本单元,标示检索的字段名称和检索对象的值,如Term("title", "lucene")。即表示在title字段中搜索关键词lucene。 3、Query:表示查询

lujianing2011的专栏 1万+
上一篇: Spring与Quartz的整合实现定时任务调度
下一篇: Lucene搜索方式大合集
OnePiece_Sky
博客等级 码龄15年 9粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值