首页 > 其他分享 >Solr学习之五:Solr查询参数及语法

Solr学习之五:Solr查询参数及语法

时间:2023-04-25 11:07:07浏览次数:37  
标签:make up 默认 查询 语法 ex 之五 Solr


一. 查询参数

1. CoreQueryParam查询的参数

1) q: 查询字符串,必须的。

2) q.op: 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定。

3) df: 默认的查询字段,一般默认指定。

4) qt: query type,指定查询使用的QueryHandler,默认为“standard”。

5) wt: writer type。指定查询输出结构格式,默认为“xml”。在solrconfig.xml中定义了查询输出格式:xml、json、python、ruby、php、phps、custom。

6) echoHandler:是否在查询结果中显示使用的QueryHandler名称。

7) echoParams:是否显示查询参数。none:不显示;explicit:只显示查询参数;all:所有,包括在solrconfig.xml定义的Query Handler参数。

8) indent - 返回的结果是否缩进,默认关闭,用indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。

9) version - 查询语法的版本,建议不使用它,由服务器指定默认值。

2.CommonQueryParameters查询的参数

1) sort:排序,格式:sort=<field name>+<desc|asc>[,<fieldname>+<desc|asc>]„ 。示例:(inStock desc, priceasc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。。

2) start:用于分页定义结果起始记录数,默认为0,从第1条记录开始。

3) rows:用于分页定义结果每页返回记录数,默认为10。

4) fq:filterquery。使用Filter Query可以充分利用FilterQuery Cache,提高检索性能。作用:在q查询符合结果中同时是fq查询符合的,例如:q=mm&fq=date_time:[20081001TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。(fq查询字段后面的冒号和关键字必须有)

5) fl:field list。指定返回结果字段。以空格“ ”或逗号“,”分隔。

6) debugQuery:设置返回结果是否显示Debug信息。

7) explainOther:设置当debugQuery=true时,显示其他的查询说明。

8) defType:设置查询解析器名称。

9) timeAllowed:设置查询超时时间。

10) omitHeader:设置是否忽略查询结果返回头信息,默认为“false”。

二. 查询语法

1. 匹配所有文档:*:*

2. 强制、阻止和可选查询:

1) Mandatory:查询结果中必须包括的(for example, only entry name containing theword make)Solr/LuceneStatement:+make, +make +up ,+make +up +kiss

2) prohibited:(for example, alldocuments except those with word believe)

Solr/LuceneStatement:+make +up -kiss

3) optional:Solr/Lucene Statement:+make +up kiss

3. 布尔操作:AND、OR和NOT布尔操作(必须大写)与Mandatory、optional和prohibited相似。

1) make AND up = +make +up :AND左右两边的操作都是mandatory

2) make || up = make OR up=make up :OR左右两边的操作都是optional

3) +make +up NOT kiss = +make +up–kiss

4) make AND up OR french AND Kiss不可以达到期望的结果,因为AND两边的操作都是mandatory的。

4. 子表达式查询(子查询):可以使用“()”构造子查询。

For ex:(make AND up) OR (french AND Kiss)

5. 子表达式查询中阻止查询的限制:For ex:make (-up):只能取得make的查询结果;要使用make (-up *:*)查询make或者不包括up的结果。

6. 多字段fields查询:通过字段名加上分号的方式(fieldName:query)来进行查询

For ex:entryNm:make AND entryId:3cdc86e8e0fb4da8ab17caed42f6760c

7. 通配符查询(wildCard Query):

1) 通配符?和*:“*”表示匹配任意字符;“?”表示匹配出现的位置。

For ex:ma?*(ma后面的一个位置匹配),ma??*(ma后面两个位置都匹配)

2) 查询字符必须要小写:+Ma +be**可以搜索到结果;+Ma +Be**没有搜索结果

3) 查询速度较慢,尤其是通配符在首位:主要原因一是需要迭代查询字段中的每个term,判断是否匹配;二是匹配上的term被加到内部的查询,当terms数量达到1024的时候,查询会失败。

4) Solr中默认通配符不能出现在首位(可以修改QueryParser,设置

setAllowLeadingWildcard为true)

5) set setAllowLeadingWildcard to true.

8. 模糊查询、相似查询:不是精确的查询,通过对查询的字段进行重新插入、删除和转换来取得得分较高的查询解决(由Levenstein Distance Algorithm算法支持)。

1) 一般模糊查询:for ex:make-believ~

2) 门槛模糊查询:对模糊查询可以设置查询门槛,门槛是0~1之间的数值,门槛越高表面相似度越高。For ex:make-believ~0.5、make-believ~0.8、make-believ~0.9

9. 范围查询(RangeQuery):Lucene支持对数字、日期甚至文本的范围查询。结束的范围可以使用“*”通配符。

For ex:

1) 日期范围(ISO-8601 时间GMT):sa_type:2AND a_begin_date:[1990-01-01T00:00:00.000Z TO 1999-12-31T24:59:99.999Z]

2) 数字:salary:[2000 TO *]

3) 文本:entryNm:[a TO a]

10. 日期匹配:YEAR,MONTH, DAY, DATE (synonymous with DAY) HOUR, MINUTE, SECOND,MILLISECOND, andMILLI (synonymous with MILLISECOND)可以被标志成日期。

For ex:

1) r_event_date:[* TO NOW-2YEAR]:2年前的现在这个时间
2)r_event_date:[* TO NOW/DAY-2YEAR]:2年前前一天的这个时间


标签:make,up,默认,查询,语法,ex,之五,Solr
From: https://blog.51cto.com/u_16087105/6223571

相关文章

  • Solr之缓存篇
    Solr在Lucene之上开发了很多Cache功能,从目前提供的Cache类型有:(1)filterCache(2)documentCache(3)fieldvalueCache(4)queryresultCache而每种Cache针对具体的查询请求进行对应的Cache。本文将从几个方面来阐述上述几种Cache在Solr的运用,具体如下:(1)Cache的生命周期(2)Cache的使用场景(3)C......
  • 钉消息Markdown语法
    支持的Markdown语法1标题2#一级标题3##二级标题4###三级标题5####四级标题6#####五级标题7######六级标题89引用10>Amanwhostandsfornothingwillfallforanything.1112文字加粗、斜体13**bold**14*italic*1516链接1......
  • 语法
    注释单行注释://多行注释:/**/文档注释:/***/字面量变量关键字,标识符进制二进制0B/0b八进制0十六进制0X/0x开头数据类型long类型后面要加L/lfloat类型后面要加F/flonga=23112879182738179L;floatb=678.08f;表达式的自动类型转换强制类型......
  • go 语言基本语法
    一、go语言初探1.基本数据类型整型(int)、浮点型(float)、布尔型(bool)、字符串(string)2.复合数据类型数组、切片、结构体、函数、map、通道(channel)、接口等3.安装Beegoinstallgithub.com/beego/bee/v2@master4.命令:goversion#查看go的安装版本go......
  • 2 Golang语法基础
    目录2Golang语法基础1变量命名规范2语法规则:变量的定义与使用①完整定义②类型推导:自动推导出变量,是什么类型③简略声明:2Golang语法基础1变量命名规范Go语言中的函数名、变量名、常量名、类型名和包名等所有的命名,都遵循一个简单的命名规则:①一个名字必须以一个字......
  • sql语法错误[1093] You can't specify target table 'score' for update in FROM clau
    不能在同一张表中将查询非结果集作为更新条件执行将需要的结果集外层套一层自查询如updateaseta.num=a.num+1wherea.namein(selecta.agefromawherexx=xxx);报错[1093]Youcan'tspecifytargettable'score'forupdateinFROMclauseupdateaseta......
  • docker搭建mongodb及基本语法的使用
    一、介绍:概述:主使用docker安装mongodb的方法记录,mongo基本语法记录的整理,大神请绕道!优势:1.MongoDB提供高性能的数据持久性。对嵌入式数据模型的支持减少了数据库系统上的IO活动2.如动态模式、灵活的文档模型,适合json数据存储,适合海量数据存储使用场景:1.数据量大,读写操作频......
  • 2、Pipeline语法及使用自定义工具的Maven工程
    Pipeline语法声明式pipeline的结构pipeline的定义有一个明确的、必须遵循的结构,它由一些directive(指令)和section(配置段)组成,每一个section又可包含其它的section、directive和step(执行步骤),以及一些condition(执行条件)的定义;◼Section:用于将那些在某个时间点需要一同运行的条目(i......
  • 开心档之C++ 基本语法
    C++基本语法C++程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象- 对象具有状态和行为。例如:一只狗的状态-颜色、名称、品种,行为-摇动、叫唤、吃。对象是类的实例。类- 类可以定义为描述对......
  • Java基础语法(一):Java程序的结构
    前言Java是一种流行的面向对象编程语言,可以用于开发各种应用程序,从桌面应用程序到企业级Web应用程序和移动应用程序。编写Java程序时,良好的程序结构是至关重要的,因为它可以帮助程序员更好地组织代码并使其易于维护和扩展。本文将介绍Java程序的结构,包括程序组成部分、代码结构和组......