solr特点三: boost(改变默认打分排序)
实现方法有3个:
- 在建索引的时候设置boost,这个值会写入文件,建索引时有额外的性能开销;
- 在查询的时候指定boost,这个值不会写入文件,查询时指定任意字段的boost值,适用与一个索引库的多种查询场景,但查询时有额外性能开销;
- (推想)前两者结合使用,如绝大多数都需要标题优先,那么建索引时可指定标题boost为2,其他场景可在查询时指定标题boost为0.5,中和建索引时的设置。
这里仅演示第二种方法:
| id | title | content | 默认得分 | 指定标题boost值为2后得分 |
| 108 | test | 开发笔记 开发笔记 开发笔记 开发笔记 开发笔记 | 1.6093808 | 1.0178617 |
| 107 | 开发笔记 | 1.439474 | 1.8208065 |
指定方法:
这时doc 107已经排在上边了:
debug query效果:
找到了方法,我们不难获得在solrj中的实现:
package demo.service; import java.util.Iterator; import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList; import base.util.ConfigUtil; public class SolrService {
private static Logger log = Logger.getLogger(SolrService.class); private static HttpSolrServer solrServer; static {
solrServer = new HttpSolrServer(ConfigUtil.getValue("solr.url"));
solrServer.setConnectionTimeout(5000);
}
public static void main(String[] args) {
SolrQuery query = new SolrQuery();
query.setQuery("title: 开发笔记^2 OR content:开发笔记");
QueryResponse rsp = null;
try {
rsp = solrServer.query(query);
} catch (SolrServerException e) {
log.error("Boost查询时遇到错误:", e);
}
SolrDocumentList docs = rsp.getResults(); Iterator<SolrDocument> iter = docs.iterator();
while (iter.hasNext()) {
SolrDocument doc = iter.next();
String idStr = doc.getFieldValue("id").toString();
int id = Integer.parseInt(idStr);
String title = doc.getFieldValue("title").toString();
String content = doc.getFieldValue("content").toString();
System.out.println("id:"+id+" title:"+title+" content:"+content);
}
}
}
注:因为我们想设置的boost针对某字段,那么在查询在时候就不能再用拷贝字段了。
其实还有一个使用拷贝字段也能排序的方法,供大家参考:
solr特点三: boost(改变默认打分排序)的更多相关文章
- jQuery Validate 表单验证插件----通过name属性来关联字段来验证,改变默认的提示信息,将校验规则写到 js 代码中
一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW 访问密码 f224 二. 添加一个另外一个插件jquery.validate.messages_cn.js. ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[2]--DIH
转载:http://quweiprotoss.wap.blog.163.com/w2/ DIH需要在solrconfig.xml中注册,如下: <requestHandler name=&quo ...
- eclipse中maven插件,改变默认仓库位置
一.eclipse中maven默认仓库是当前用户下.m2/repository,需改变默认路径按照下面步骤. 步骤一:安装maven 下载:http://maven.apache.org/ 配置mav ...
- docker改变默认存储路径到数据盘(自己实践)
一.首先将数据盘格式化分区并挂载(文章中提到的sdb(腾讯云)实践中是vdb(阿里云),文章中挂载在ssd目录下,实践中是挂载到data目录下的,后面安装docker部分以后是实践中的记录,上面数据盘 ...
- java提供的默认list排序方法-转
1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...
- 给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后。 要求:空间复杂度是O(1),且只能遍历一次字符串。
题目:给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后. 要求:空间复杂度是O(1),且 ...
- [转帖]从 2G 到 5G,手机上网话语权的三次改变
从 2G 到 5G,手机上网话语权的三次改变 美国第一大电信运营商 Verizon 公司的 CEO Hans Vestberg 手持一部 iPad,屏幕上显示俯瞰地面的飞行地图.400 多公里外的洛杉 ...
- 使用事件的preventDefault()方法改变默认行为
事件有属性,还有方法,还有事件.事件本身是个对象^_^ 事件的preventDefault()方法改变默认行为,在事件发生前阻止,不让其发生.这样的应用场景有很多,常见表单验证,如必填字段不能为空. ...
- 20162327WJH第三次实验——查找与排序2
20162327WJH第三次实验--查找与排序2 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王旌含 学号:20162327 成绩: 指导教师:娄嘉鹏 王志强 实验日期:11月 ...
随机推荐
- 超简单的制作win7 U盘启动
我感觉真的太简单,操作so简单 第一个下载这个工具,这是微软官方提供的,用这个工具可以把win7的iso文件刻录到u盘中,u盘就可以作为系统启动盘来使用了 Windows 7 USB DVD Down ...
- bootstrap插件的一些常用属性介绍
1.下拉菜单 <div class="dropdown"> <button class="btn btn-default dropdown-toggle ...
- python xlwt操作excel
- mybatis 学习五 二级缓存不推荐使用
mybatis 二级缓存不推荐使用 一 mybatis的缓存使用. 大体就是首先根据你的sqlid,参数的信息自己算出一个key值,然后你查询的时候,会先把这个key值去缓存中找看有没有value,如 ...
- python实现进度条--主要用在上传下载文件
在python中进行socket上传文件的时候使用进度条,然后在网上找了好久,找寻相关的进度的条的使用,看了几个,发现总是无法进行调用,主要原因是在进行上传文件的时候,每次传送的数据量是固定的,数据的 ...
- leetcode563
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- VB中的正则表达式
RegExp对象提供简单的正则表达式支持功能. RegExp对象的用法:Function RegExpTest(patrn, strng)Dim regEx, Match, Matches ' 建立变 ...
- 提示框一段时间以后消失setTimeout
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C# MemoryStream先写后读的奇怪现象
static void Main(string[] args) { MemoryStream ms = new MemoryStream(); BinaryWriter bw = new Binary ...
- 49. Group Anagrams (string, HashTable)
Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...