solr6.3.0 AdminUI查询中各参数的含义
博客专区 > chloe900 的博客 > 博客详情
solr6.3.0 AdminUI查询中各参数的含义
chloe900 发表于1年前
solr6.3.0 AdminUI查询中各参数的含义
  • 发表于 1年前
  • 阅读 63
  • 收藏 0
  • 点赞 1
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: 本文分析了adminUI中各基本参数的含义;solr查询的相关性排序是怎么一回事;solr分页和排序的使用。

本文内容是在官方文档给出的gettingstarted的Demo下进行的。如何启动运行官方demo"gettingstarted"可在公众号中历史文章中查看solr6.3.0的安装部署

AdminUI 中各参数及其含义

qt = query type

指定那个类型来处理查询请求,一般不用指定,默认是standard

 

q = query

查询字符串,必须指定,查询结果根据该参数指定的查询词被打分

 

fq = filter query 

过滤查询,在q的基础上进行过滤,不影响打分

 

sort

根据查询结果的打分或者其他指明的特点进行排序。有两种排序升序(asc),降序(desc),不区分大小写。允许根据多个field排序,用逗号分隔开。

NB:  排序的field必须是索引的field,同时field对应的type不能是multiValued的

 

start 

结果从那一条记录开始查询

 

rows

 查询多少条记录

 

fl

定义返回记录的field

 

df

默认查找的字段。solr6.3.0默认df=_text_

通过solr的adminUI 中可以看到如下配置

在server/solr/gettingstarted/conf/managed-schema

文件最后一行有这样一行配置

<copyField source="*" dest="_text_"/>

默认所有的field都被copy 到_text_中。

用处:比如一个电商的搜索api调用方大部分只期望搜索产品名称则df=product_name

 

wt

指明返回数据格式。默认是json

 

indent

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

 

debugQuery

查询结果中包含调试信息。explain info中包含每一条查询结果的信息

 

更多详细信息参考: http://www.solr.cc/blog/?p=1018

 

 

NB:solr官方的例子中,对price进行排序时需要修改server/solr/gettingstarted/conf/managed-schema文件中 

<field name="price" type="tdoubles"  />

改为

<field name="price" type="tdouble"  />

使用solr AdminUI进行查询

http://192.168.1.23:8983/solr/gettingstarted/select?df=_text_&fl=name,price,features,score&fq=manu:Belkin&indent=on&q=ipod&sort=price%20asc&wt=json

查询结果如图所示

相关性排序

solr与其他关系型数据库和NoSQL的区别之一,是solr对返回的结果进行了查询词的相关性排序,默认按照相关性降序排列。score越高,查询词和文档的相关性就越高。

 

以gettingstarted为例,使用不同的参数,进行如下三次查询:

1

query : iPod

fl:name,features,score

 

返回的结果按照score降序排列。直观的看,第一条数据,搜索词出现3次,剩余的两条数据ipod只出现了一次。

 

score的值不是固定不变的。它仅用于lucence内部做相关性排序使用,查询词不同,分数也不同。

 

每一次查询时,每一个文档会被计算出一个和查询词匹配的分数,分数越高,文档和查询词越相关。

query : iPod power

fl:name,features,score

 

查询结果与上次相同,但是我们注意到,打分不同

3

query : iPod power^2

fl:name,features,score

 

给power这个查询词设置一个2的权重(默认都是1)。这意味着,power这个词比ipod这个词重要了一倍。现在看查询结果,虽然查询来还是那3条结果,但是顺序已经发生了变化。

 

翻页和排序

 

想一想,你自己平时在淘宝上会翻到第几页,99%的人按照某个条件拍个序,然后从前几个总找一个(不过也真有一页一页往后翻的)。所以我们在做搜索时,真的不需要返回全部的结果集。

 

olr使用rows和start两个属性,进行分页。

 

在客户端发送一个查询请求给solr,solr经过一系列的处理之后,去索引库中找,将找到的结果返回给solr,solr在经过一系列的处理,返回给客户端。执行过程如下:

所以:返回的结果越多,重新组织需要的时间就越长

 

--排序--

 

在上面的图例中我们看到可以根据相关性(score)进行排序,可以根据价格进行排序。排序和分页基本上一起使用(原文用的hand in hand意境好美),因为排序顺序决定分页的结果。

 

如果没有指定排序,solr会根据score来进行排序。如果两个文档的打分相同,他们会根据lucene的一个内部ID来排序。这个排序的值会随着索引

的变化而变化,所以这个排序不可靠。

更多信息请关注微信公众号:金沙数据

 

 

 

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 9
博文 8
码字总数 7030
×
chloe900
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: