使用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,总结到这里。
相关推荐
本文将深入讲解 Solr 的使用及安装过程。 一、Solr 简介 Solr 基于 Lucene 库,提供了一个高度可配置和可扩展的平台,用于处理和索引大量数据,支持多种数据源,如文件、数据库等。其主要特性包括: 1. **全文搜索...
"solr6.5使用的IK分词"就是一个针对Solr 6.5版本的中文分词解决方案。 **IK分词器** IK分词器(Intelligent Chinese Analyzer)是由Lucene社区开发的一款高性能的中文分词工具,适用于Java环境。它的主要目标是为...
### Solr(Cloudera)使用手册 #### 一、创建Collection与管理实例 在使用Solr(Cloudera)时,创建Collection是基本的操作之一。Collection是Solr中的数据存储单元,相当于关系数据库中的表。 ##### 创建路径与实例 ...
本教程将深入探讨Solr的基本概念、安装配置、索引管理、查询操作以及solrJ库的使用,同时也涉及到了IK分词器的详细应用。 首先,让我们了解一下Solr的核心概念。Solr是基于Lucene的搜索服务器,它可以快速地处理...
要使用solr-dataimport-scheduler.jar,首先需要将该jar包部署到Solr服务器的lib目录下,这样Solr启动时会自动加载这个组件。然后,在Solr的配置文件(如solrconfig.xml)中,你需要定义一个DIH的配置,包括数据源...
### Solr 5.5.4 使用文档 #### 一、环境配置与部署步骤 **1.1 环境需求** - **JDK**: 1.7 或以上版本。 - **Tomcat**: 8 或以上版本。 - **Solr**: 5.5.4 版本。 - **SolrJ**: 5.5.4 版本。 **1.2 部署步骤** 1...
### Lucene与Solr的使用详解 #### 一、Lucene概述 Lucene是一款高性能、全功能的文本搜索引擎库,由Java语言编写而成。它能够为应用系统提供强大的全文检索能力,是当前最为流行的开源搜索库之一。由于其高度可...
solr5.5使用的IK分词IKAnalyzer2012FF_u2.jar包,亲测可用。以及solr5.5同mysql数据同步用到的solr-dataimportscheduler-1.1.1.jar包,亲测可用。
### Solr的安装使用步骤详解 #### Solr概述与特性 **Solr** 是 Apache 下的一个顶级开源项目,它基于 **Lucene** 进行构建,提供了强大的全文搜索能力。相较于 Lucene,Solr 提供了更为丰富的查询语言支持,并且...
《easynet.solr开发与使用》 在现代信息技术领域,搜索引擎已经成为不可或缺的一部分,而Apache Solr作为一款强大的开源搜索引擎,被广泛应用于各种数据检索场景。为了方便开发者更高效地集成和操作Solr,Easynet...
为了方便使用 Solr 的命令行工具,可以将 Solr 的 bin 目录添加到系统的 PATH 环境变量中。例如,在 `.bashrc` 或 `.bash_profile` 文件中添加: ``` export SOLR_HOME=/path/to/solr-8.8.2 export PATH=$PATH:$...
标题“lucene简单介绍及solr搭建使用”涉及了两个主要的开源搜索技术:Lucene和Solr。Lucene是Java开发的一个全文检索库,而Solr则是基于Lucene构建的企业级搜索平台,提供了更高级的功能和管理界面。 **Lucene简介...
Solr安装与使用 Solr是一款功能强大的搜索引擎,能够帮助我们快速搭建企业搜索平台。在本文中,我们将详细介绍Solr的安装和使用过程。 一、安装Solr 首先,我们需要下载Solr的安装包。这里我们使用的是Solr 1.3...
centos7 环境 安装docker 并在docker 中部署solr 并使用
solr使用和原理 简单明了的介绍了solr的使用和原理,及其部署方式,适合初学者第一次部署
在本文档中,我们将详细介绍如何部署和使用 Solr 5.5.4 版本,包括两种常见的部署方式:Jetty 和 Tomcat,并涉及到中文分词器IKAnalyzer的集成以及对Word文档的支持。 首先,我们需要准备合适的环境,这里要求的是...
- **高亮显示**:Solr 能够在搜索结果中自动高亮显示匹配的关键词,提高用户体验。 - **数据库接口**:除了支持文本文件外,Solr 还能处理来自数据库的数据源,提供了一种从数据库到索引的无缝连接方案。 - **电子...
### Solr在Java中的使用总结 #### 一、Solr简介 Solr是一个高性能的全文搜索引擎,基于Apache Lucene开发,使用Java 5编写。它不仅继承了Lucene的强大功能,还提供了更丰富的查询语言以及更好的性能优化。Solr具备...
### Solr基础使用知识点 #### 一、需求分析与实现方法 **1.1 需求** 在电商网站中,商品信息搜索是一项至关重要的功能。用户能够通过输入关键字、选择分类或设定价格范围来查找商品。此外,还支持按照价格进行排序...