Lucene查询语法详解

Lucene查询语法以可读的方式书写,然后使用JavaCC进行词法转换,转换成机器可识别的查询。

词语查询(Terms)
    单词,例如:"test","hello"
    语句,例如:"hello,world!"

字段查询(Field)
    title:hello
    或者
    title:"hello title" //搜索title为 hello title关键字的文档
    title:hello title   //搜索title为hello,或者包含title关键字的文档

通配符查询(WildCard Searches)
    支持在单个单词或者语句中添加通配
    ? 匹配单个字符
    * 匹配0个或多个字符

模糊词查询(Fuzzy Searches)
    想要搜索模糊词,需要在词语后面加上符号~
    test~  //搜索和test相近的词,如text或者tests等词
    test~0.8  //支持在~后面添加模糊系数,模糊系数[0-1],越靠近1表示越相近,默认模糊系数为0.5。

邻近词查询(Proximity Searches)
    模糊词只是针对某个单词,在语句间也存在模糊搜索的概念,只不过不是单词的模糊,而是单词之间内容的模糊。
    注意要使用双引号`""`包围, 这部分内容通过字符个数限制
    "hello world"~10  //可以匹配"hello 123 world"或者"hello,Tom,world"

范围查询(Range Searches)
    {}尖括号表示不包含最小值和最大值,可以单独使用
    []方括号表示包含最小值和最大值,可以单独使用
    grade:{60,80] //搜索成绩grade字段小于等于80分,大于60分的
    name:{A,C}  //搜索名字在A和C之间的, 返回,bone、baby、barry

词语相关度查询(Boosting a Term)
    如果单词的匹配度很高,一个文档中或者一个字段中可以匹配多次,那么可以提升该词的相关度。使用符号^提高相关度。
    jakarta^4 apache  //提高jarkarta的比重

布尔操作符(Boolean Operator)
    必须使用大写
    支持多种操作符: AND、 OR、 NOT、+ 、 -
        AND: 连接两个搜索条件,仅当两个搜索条件都满足时,才认为匹配, 通常用来做交集操作。也可以使用&&替换。
        OR: 连接两个搜索条件,当其中一个条件满足时,就认为匹配。通常用来做并集操作。也可以使用||替换。
        NOT: 排除某个搜索条件。通常用来做差集操作也可以使用!替换。
        +: 包含该操作符后跟着的搜索条件。
        -: 排除该操作符后跟着的搜索条件。
    示范:
        tom AND john 或者 tom && john //搜索同时包含tom和john的文档
        tom OR john 或者 tom || john  //搜索包含tom或者john的文档
        tom NOT john 或者 tom && !john //搜索包含tom,不包含john的文档
        +tom  //搜索包含tom的文档
        -tom  //搜索不包含tom的文档
        hello AND (tom OR john)  //要搜索包含hello的文档中,也包含tom或者john的
        title:(+return +"pink panther")  //要搜索标题中,既包含return 也包含pink panther的

转义字符(Escaping Special Character)
    Lucene中支持很多的符号: + - && || ! ( ) { } [ ] ^ " ~ * ? :     如果需要搜索 (1+1):2 需要对改串进行转换,使用字符\,  如:\(1\+1\)\:2

原文地址:https://www.cnblogs.com/one-villager/p/10338965.html

时间: 2024-10-10 17:08:22

Lucene查询语法详解的相关文章

solr查询语法详解

查询语法 1.匹配所有文档:*:* 2.强制.阻止和可选查询: 1)    Mandatory:查询结果中必须包括的(forexample, only entry name containing the word make) Solr/LuceneStatement:+make,+make +up ,+make +up +kiss 2)    prohibited:(for example, all documentsexcept those with word believe) Solr/Lu

子查询语法详解

子查询所要解决的问题:不能一步求解的问题!语法:select 语句的嵌套1.单行子查询:如果子查询只返回一行记录,就是单行子查询单行操作符: = , > , >=,<,<=,<>2.多行子查询:如果子查询返回多行记录,就是多行子查询多行操作符: in(set) , any , all如:查询工资比SCOTT高的员工信息,分两步1.查询SCOTT的工资: select sal from emp where ename='SCOTT';2. 查询比3000高的员工: sel

【Solr】索引库查询界面详解

目录 索引库查询界面详解 回到顶部 索引库查询界面详解 q:主查询条件.完全支持lucene语法.还进行了扩展. fq:过滤查询.是在主查询条件查询结果的基础上进行过滤.例如:product_price:[10 TO 20] sort:排序条件.排序的域asc.如果有多个排序条件使用半角逗号分隔. start, rows:分页处理.Start起始记录rows每页显示的记录条数. fl:返回结果中域的列表.使用半角逗号分隔. df:默认搜索域. wt:响应结果的数据格式,可以是json.xml等.

Hadoop Hive sql语法详解

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据.而mapreduce开发人员可以把己写的mapper 和reducer 作为插件来支持

PL/SQL程序设计基础语法详解(一)

一.什么是PL/SQL(Procedure Language/SQL) 概念:PLSQL是Oracle对sql语言的过程化扩展 指在SQL命令语言中增加了过程处理语句(如分支.循环等),使SQL语言具有过程处理能力. PL/SQL的结构: declare 说明部分 (变量说明,光标申明,例外说明 ] begin 语句序列 (DML语句]- exception 例外处理语句 End; 简单的PL/SQL程序 如果是在命令行中需要使用 set serveroutput on先打开显示 declare

SQLSERVER存储过程语法详解

SQL SERVER存储过程语法: Create PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }         [ VARYING ] [ = default ] [ OUTPUT ]     ] [ ,...n ] [ WITH     { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sq

Oracle创建表语句(Create table)语法详解及示例

Oracle创建表语句(Create table)语法详解及示例   创建表(Create table)语法详解1. ORACLE常用的字段类型ORACLE常用的字段类型有VARCHAR2 (size) 可变长度的字符串, 必须规定长度CHAR(size) 固定长度的字符串, 不规定长度默认值为1NUMBER(p,s) 数字型p是位数总长度, s是小数的长度, 可存负数最长38位. 不够位时会四舍五入.DATE 日期和时间类型LOB 超长字符, 最大可达4GCLOB 超长文本字符串BLOB 超长

Java8初体验(二)Stream语法详解

原文链接:http://ifeve.com/stream/ 1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel aggregate operations. 我们来解读一下上面的那句话: Stream是元素的集合,这点让Stream看起来用些类似Iterator: 可以支持顺序和并行的对原Stream进行汇聚的操作: 大家可以把Stream当成一个高级版本的

[持续交付实践] pipeline:pipeline 使用之语法详解

一.引言 jenkins pipeline语法的发展如此之快用日新月异来形容也不为过,而目前国内对jenkins pipeline关注的人还非常少,相关的文章更是稀少,唯一看到w3c有篇相关的估计是直接翻译软件翻的,读下来惨不忍睹.没办法,语法详解这章我干脆把jenkins官网上的语法说明全部翻译了一遍,并更新了陈旧的内容(可怜了我大学四级的英语水平~),英语好的朋友也可以直接到官网阅读. 二.语法简介 Pipeline最基本的部分是"step".基本上,step告诉Jenkins 要