Solr解析器通用的查询参数

简介: 本文主要介绍下Solr解析器中通用的查询参数。这些参数能够在标准查询解析器、DisMax查询解析器及eDisMax查询解析器中通用。下表总结了Solr通用的查询参数,支持标准的、DisMax、eDisMax查询请求。

本文主要介绍下Solr解析器中通用的查询参数。这些参数能够在标准查询解析器DisMax查询解析器eDisMax查询解析器中通用。

下表总结了Solr通用的查询参数,支持标准的、DisMax、eDisMax查询请求。

参数 描述
defType 选择用来处理查询的查询分析器。
sort 根据响应的分数或另一个指定的特性对查询的响应进行正序或倒序排序。
start 指定Solr查询响应展示内容的偏移量(默认0)。
rows 控制一次返回多少条数据(默认10)
fq 对查询结果指定一个查询过滤器
fl 指定字段列表限制查询响应中返回信息。这些字段应该在索引时设置为储存状态才能返回。
debug 请求响应中附加的调试信息。指定参数`debug=timing`,只返回时间信息;指定参数`debug=results`,返回每个文档的“解释”信息;指定参数`debug=query`返回所有调试信息。
explainOther 参数`explainOther`指定Lucene查询来标记文档集。如果非空,本次查询将返回调试信息,以及主查询(指定`q`参数)查询文档集的解释信息。
timeAllowed 定义要处理的查询的时间。如果处理超时,只返回部分信息。
omitHeader 如果设置为true,返回结果中不包含header数据。header数据包括请求信息,比如请求完成时间。默认是false。
wt 指定用于格式化响应结果的请求writer。
logParamsList 默认情况下,Solr记录所有参数。设置该参数来限制已记录的参数。要被记录的参数,以逗号分割(比如`logParamsList=param1,param2`)。空列表表示不记录任何参数,如果要记录所有参数,不要定义这个参数。

接下来的章节将详细描述各个参数。

defType

参数defType指定Solr执行主查询时使用的查询解析器。比如:defType=dismax

如果没有指定defType,将默认使用标准个查询解析器。

sort

参数sort指定查询结果升序或降序。这个参数可以作用于数字或字母内容。可以使用全消息或全大写。(比如,全是ascASC)。

Solr可以根据文档分值或其他被索引或使用DocValues(即,在schema.xml文件中使用multiValued="false"docValues="true"或者indexed="true"的字段,如果没有启用DocValues,将使用检索数据)的单值字段值来进行排序。提供:

  • 没有进行标记(即,字段没有analyzer,并且内容被解析进标记,致使排序不一致),或
  • 使用分析器analyzer(比如KeywordTokenizer)且只产生一个检索词。
    如果你向对一个需要进行标记便于检索的字段排序,可以在schema.xml文件中使用<copyField>指定复制字段。然后就可以查询该字段,在克隆字段上排序。
    下面的表格将说明如果设置各种参数来对Solr响应进行排序:
示例 结果
如果没有指定参数`sort`,将根据打分降序排列。
score desc 根据打分从高到底降序排列。
price asc 根据字段`price`升序排列。
inStock desc, price asc 根据字段`inStock`降序排列,然后根据字段`price`升序排列。

关于排序参数:

  • 排序必须包含一个字段名(或打分),之后跟一个空白字符(在URL字符串中使用+或%20),之后跟排序方向(asc或desc)。
  • 多种排序规则可以使用逗号隔开,使用这样的语法:sort=<field name>+<direction>,<field name>+<direction>],...
  • 如果有多个排序条件,只有在第一个排序结果并列,第二个才生效。如果有第三个从句,只有当第一个和第二个都并列相同时,才生效。依次类推。

start

该参数指定Solr查询响应展示内容的偏移量。默认值是0.换句话说,默认情况下,Solr返回的结果没有偏移,从头开始。设置一个值,比如3,Solr将跳过前面 几条数据,从指定偏移位置开始返回。你可以使用这种方式来分页。比如,如果参数rows设置为10,可以通过设置start为0来连续返回几页数据,然后使用相同的查询参数,设置start为10,再次查询,然后设置20.

rows

可以使用参数rows来进行分页查询。这个参数指定了一次查询最大返回文档的数目。默认值是10.就是说,默认一次查询返回10个文档数据。

fq

参数fq可以定义一个限制返回文档父集,不影响评分。通过指定参数fq将缓存主查询,用来提高复杂查询速度。当之后使用相同的过滤器,将会命中缓存,缓存中的结果立即返回。

使用参数fq时,需要注意:

  • 参数fq可以在一个查询中指定多次。只有每个参数实例的交集才能返回。在下面的例子中,只有popularity大于10且section是0的才能返回。fq=popularity:[10 TO *]&fq=section:0
  • 过滤查询可以包含复杂的布尔查询。上面的例子也可以使用两个从句一个fq实现:fq=+popularity:[10 TO *] +section:0
  • 每个过滤查询的文档集都是独立缓存的。一次,关于签名的例子:使用一个fq两个从句,和使用两个分开的fq将不想同(了解调整高速缓存大小和确保过滤缓存,看配置Solr实例)。
  • 对所有参数:在URL中特殊字符需要进行转移为十六进制。在线工具http://meyerweb.com/eric/tools/dencoder/可以提供这种转码。

fl

参数fl限制响应信息中包含的字段列表。该字段需要在索引时被存储。

字段列表可以通过空格或逗号分割。字符串”score”可以被用来指明特定查询的每个文档的分数作为字段返回。通配符”*”表示文档的所有字段。可以添加伪字段、函数、transformers作为字段返回。

下表是如果使用fl的基础示例:

字段 结果
id name price 只返回id, name, 和 price
id,name,price 只返回id, name, 和 price
id name, price 只返回id, name, 和 price
id score 只返回id和score
\* 返回文档所有字段。这是参数`fl`默认值。
\* score 返回文档所有字段,以及每个文档的分值。

Function Values

函数可以为结果中每一个文档计算结果,并返回伪字段:fl=id,title,product(price,popularity)

Document Transformers

Document Transformers可以用来修改查询结果中的每一个文件的返回信息:fl=id,title,[explain]

Field Name Aliases

可以指定字段、函数、transformer的显示名,比如:fl=id,sales_price:price,secret_sauce:prod(price,popularity),why_score:[explain style=nl]

"response":{"numFound":2,"start":0,"docs":[
      {
        "id":"6H500F0",
        "secret_sauce":2100.0,
        "sales_price":350.0,
        "why_score":{
          "match":true,
          "value":1.052226,
          "description":"weight(features:cache in 2) [DefaultSimilarity], result of:",
          "details":[{
...• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11

debug

参数debug可以指定多次,并支持以下参数:

  • debug=query: 至返回查询的调试信息
  • debug=timing: 返回查询执行时间的调试信息
  • debug=results: 返回结果分值的调试信息
  • debug=all: 返回所有的调试信息(也可以使用debug=true
    为了向后兼容,debugQuery=true可以使用debug=all替代。
    默认查询不包括调试信息。

explainOther

参数explainOther指定Lucene查询来标记文档集。如果非空,本次查询将返回调试信息,以及主查询(指定q参数)查询文档集的解释信息。比如:q=supervillians&debugQuery=on&explainOther=id:juggernaut

上面的查询允许你检查最佳匹配的分值解释信息,可以与id:juggernaut进行比较,可以知道为什么不是你期望的排名。

默认参数为空,没有额外解释信息返回。

timeAllowed

This parameter specifies the amount of time, in milliseconds, allowed for a search to complete. If this time expires before the search is complete, any partial results will be returned.

此参数指定允许搜索完成的时间,以毫秒为单位。如果处理超时,只返回部分信息。

omitHeader

This parameter may be set to either true or false.

该参数可以设置为true或false。

如果设置为true,返回结果中不包含header数据。header数据包括请求信息,比如请求完成时间。默认是false。

wt

指定用于格式化响应结果的请求writer。详细信息查看Response Writers

cache=false

Solr默认缓存所有的查询、过滤查询结果。为了禁用缓存,设置参数cache=false

还可以使用cost选项来控制非缓存的过滤查询。这允许你能够指定低耗非缓存过滤,而不是高耗非缓存过滤器。

对于高耗过滤器,如果cache=falsecost>=100,查询实现了PostFilter,在匹配主查询和其他过滤查询之后,一个收集器将被请求来进行查询和过滤文档。可以有多个后置过滤器,可以根据cost配置。

比如:

// normal function range query used as a filter, all matching documents
// generated up front and cached
fq={!frange l=10 u=100}mul(popularity,price)
// function range query run in parallel with the main query like a traditional
// lucene filter
fq={!frange l=10 u=100 cache=false}mul(popularity,price)
// function range query checked after each document that already matches the query
// and all other filters.  Good for really expensive function queries.
fq={!frange l=10 u=100 cache=false cost=100}mul(popularity,price)• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11

logParamsList

默认情况下,Solr日志记录所有请求参数。从4.7版本开始,可以设置参数来限制哪些参数被记录。这有助于记录你认为比较重要的参数。比如,你可以定义:logParamsList=q,fq。只有qfq参数会被记录。

如果不希望记录任何参数,你可以给参数logParamsList赋空值(比如:logParamsList=)。

   这个参数可以应用与所有的Solr请求,不只查询请求。

   原文链接:Common Query Parameters

   翻译:沉潜飞动

   译文链接:通用查询参数

目录
相关文章
|
2月前
|
存储 Cloud Native 关系型数据库
Ganos实时热力聚合查询能力解析与最佳实践
Ganos是由阿里云数据库产品事业部与飞天实验室共同研发的新一代云原生位置智能引擎,集成于PolarDB-PG、Lindorm、AnalyticDB-PG和RDS-PG等核心产品中。Ganos拥有十大核心引擎,涵盖几何、栅格、轨迹等多种数据处理能力,实现了多模多态数据的一体化存储、查询与分析。本文重点介绍了Ganos的热力瓦片(HMT)技术,通过实时热力聚合查询与动态输出热力瓦片,无需预处理即可实现大规模数据秒级聚合与渲染,适用于交通、城市管理、共享出行等多个领域。HMT相比传统网格聚合技术具有高效、易用的优势,并已在多个真实场景中验证其卓越性能。
55 0
|
1月前
|
域名解析 网络协议 安全
DNS查询工具简介
DNS查询工具简介
|
2月前
|
域名解析 网络协议 安全
DNS查询工具简介
DNS查询工具简介
|
1月前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色
|
2月前
|
JSON API 数据格式
requests库中json参数与data参数使用方法的深入解析
选择 `data`或 `json`取决于你的具体需求,以及服务器端期望接收的数据格式。
229 2
|
1月前
|
存储 缓存 并行计算
yolov5的train.py的参数信息解析
这篇文章解析了YOLOv5的`train.py`脚本中的参数信息,详细介绍了每个参数的功能和默认值,包括权重路径、模型配置、数据源、超参数、训练轮数、批量大小、图像尺寸、训练选项、设备选择、优化器设置等,以便用户可以根据需要自定义训练过程。
32 0
|
3月前
|
SQL 数据库
|
3月前
|
Prometheus 监控 Cloud Native
Prometheus 查询语言(PromQL):深入解析
【8月更文第29天】Prometheus 是一款开源的监控系统和时间序列数据库,广泛应用于各种系统的监控和告警。PromQL(Prometheus Query Language)是 Prometheus 用来查询和聚合时间序列数据的一种强大语言。本文将详细介绍 PromQL 的功能和语法,包括基本查询、向量操作、聚合函数等,并提供具体的代码示例。
441 2
|
3月前
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
321 0
|
3月前
|
SQL 关系型数据库 MySQL

推荐镜像

更多
下一篇
无影云桌面