文档章节

Solr debugQuery使用体会

吐槽的达达仔
 吐槽的达达仔
发布于 2014/12/05 22:18
字数 434
阅读 67
收藏 0

使用solr,就使用到各种的排序和boost。

在公司的站内搜索引擎,就遇到了排序的问题,各种各样的条件,融合在最后一个分数里面。

 

开启debugQuery,就可以看到每个document的打分逻辑原理。

比如说,我们的查询是这样的:

 /solr/select?q=ddr&defType=dismax&qf=name^1000+description^100&bf=pow(price,1.5)&debugQuery=true&indent=true 

 

开启了debugQuery后,获得的结果是这样的:

1.6771803 = (MATCH) sum of:  
   0.64883727 = (MATCH) max of:  
      0.64883727 = (MATCH) weight(name:ddr^1000.0 in 6), product of: 
         0.99999994 = queryWeight(name:ddr^1000.0), product of:  
            1000.0 = boost  
             2.446919 = idf(docFreq=3, maxDocs=17)  
             4.0867718E-4 = queryNorm  
         0.6488373 = (MATCH) fieldWeight(name:ddr in 6), product of:  
            1.4142135 = tf(termFreq(name:ddr)=2)  
            2.446919 = idf(docFreq=3, maxDocs=17)  
            0.1875 = fieldNorm(field=name, doc=6)  
   1.028343 = (MATCH) FunctionQuery(pow(float(price),const(1.5))), product of:  
      2516.272 = pow(float(price)=185.0,const(1.5))  
      1.0 = boost  
      4.0867718E-4 = queryNorm

 

按照这个格式,把你的debugQuery的信息取出来,格式化就得到了。

 

首先,最上面的分数是这个document的总分:1.6771803 

这个分数是怎么来的?

总分 = 字段得分 + 每个FunctionQuery 的得分。

 

Solr的dismax引擎,会选择一个最高得分的字段,作为该document的基础。

然后通过FunctionQuery进行调整。

加入,被查询的字段有:

productName^100

productDesc^10

那么2者都马努匹配的情况下,productName^100 的得分是0.9 ,productDesc^10的得分是0.8.

取0.9作为分数基底。

 

然后有2个FunctionQuery,分别是促销排名值0.012,和上架时间排名值0.011

那么这个document的分值= max(0.9 , 0.8) + 0.012 + 0.011 = 0.923

 

在debug信息中,queryNorm 一般会是个常量,不用管它。

tf   是词条在文本中出现的次数

idf   是词条在文本中的重要性程度 

 

 

OK,总结到这里。

 

 

 

 

 

 

 

 

 

本文转载自:http://dacoolbaby.iteye.com/blog/2100957

吐槽的达达仔
粉丝 28
博文 102
码字总数 5838
作品 0
广州
程序员
私信 提问
solr搜索引擎使用

大家知道,搜索引擎重要作用之一就是全文检索了,下面看下怎么使用solr搜索: 这里使用的是mmseg4j分词器 正常搜索关键词“提高宝贝排名”。 debugQuery发现被切分为“提高 宝贝 排名”执行,...

菜蚜
2016/05/18
33
0
Solr查询参数QueryParam

CoreQueryParam查询的参数 1) q: 查询字符串,必须的。 2) q.op: 覆盖schema.xml的defaultOperator(有空格时用”AND”还是用”OR”操作逻辑),一般默认指定。 3) df: 默认的查询字段,一般...

翊骷
2014/08/28
0
0
solr入门——solr基础及常用查询

1.solr介绍 1.1 solr是什么 Solr是构建在Apache的Lucene之上独立的企业级搜索应用服务器。对外提供类似REST风格的Web Services,用户可以通过http请求发送指定格式文件到Solr服务器生成索引、...

freeli
2018/09/07
0
0
Solr中搜索加入空格之后搜不到结果,是分词位置标注的问题?

@狮子的魂 你好,想跟你请教个问题: 实际项目中用到了Jcseg,不得不说非常好用,谢谢~~ 有个问题,我截图如下: 搜索"海底捞102"是有结果的,如图1,搜索"海底捞 102"却没有结果了,中间多了...

zenoting
2014/11/06
525
2
Solr performance tips

Page query result: purpose: pre-load more documents to avoid additional queries when navigating through pages, so that pagination result loads from document cache how: solrconfi......

zhanjia
2015/04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

线程池之ThreadPoolExecutor使用

ThreadPoolExecutor提供了四个构造方法: ThreadPoolExecutor构造方法.png 我们以最后一个构造方法(参数最多的那个),对其参数进行解释: public ThreadPoolExecutor(int corePoolSize, /...

天王盖地虎626
21分钟前
1
0
小程序登陆流程

http://www.bubuko.com/infodetail-2592845.html

为何不可1995
30分钟前
1
0
Consul+Spring boot的服务注册和服务注销

一图胜千言 先看一看要做事情,需要在Consul上面实现注册中心的功能,并以2个Spring boot项目分别作为生产者,消费者。 Consul 假设已经完成文章《Consul的开发者模式之Docker版》中的所有的...

亚林瓜子
36分钟前
4
0
MySQL高可用之基于Galera复制跨地域节点分布的滥用

mysql使用教程 MySQL高可用之基于Galera复制跨地域节点分布的滥用 2018-11-22 02:15 8335 85 让我们再一次讨论MySQL高可用性(HA)和同步复制。 它是地理上分布区域上一些高可用性参考架构解...

rootliu
47分钟前
1
0
js判断pc还是移动端

var pcyidong =/(iPhone|iPad|iPod|iOS|Android)/i.test(navigator.userAgent); 如果pcyidong的值为false则用户的浏览器为pc端 如果pcyidong的值为true则用户浏览器为移动端 if (pcyidong =...

流年那么伤
58分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部