《从Lucene到Elasticsearch:全文检索实战》学习笔记四
今天我给大家讲讲布尔检索模型基本概念
布尔检索模型:
检索模型是判断文档内容与用户相关性的核心技术,以大规模网页搜索为例,在海量网页中与用户查询关键词相关的网页可能会有成千上万个,甚至耕读哦。那么信息检索系统是如何判断网页和查询关键词是相关的?内部的排序模型是怎样的?
布尔检索模型中主要有AND、OR、NOT三种逻辑运算,布尔逻辑运算符的作用是把检索词连接起来,构成一个逻辑检索式。
AND:逻辑与,用来表示其所连接的两个检索项的交叉部分,即检索词的交集部分
OR:逻辑或,用于连接并列关系的检索词。
NOT:逻辑非,排除不需要的和影响检索结果的概念
运算符之间的优先级:NOT>AND>OR,如检索表达式:中国 NOT 日本 AND 歌曲 OR 小说
利用小括号”()“可以设置个性化的检索方程,例如检索出不包含日本在内的有关教育或法律方面的大学:
(university OR college)AND (education OR Law) NOT Japan
如下图为单词-文档矩阵(单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型)我需要查询包含“谷歌” “开源”但不包含“大会”的文档,构造布尔查询:
| doc1 | doc2 | doc3 | doc4 | |
| 谷歌 | 0 | 1 | 0 | 1 |
| 开源 | 0 | 1 | 0 | 1 |
| 大会 | 1 | 0 | 0 | 0 |
谷歌 AND 开源 NOT 大会
分别取出“谷歌” “开源” 以及“大会”对应的行向量,对“大会”对应的行向量去反算:
谷歌 :0 1 0 1
开源:0 1 0 1
大会:1 0 0 1 (取反:0 1 1 1)
0101 AND 0101 AND 0111 =0101
布尔检索模型优点如下:
1.符合人们的思维方式,通过AND OR NOT轻松可以表达
2.实现方式很容易实现
布尔检索模型的缺点:
1.它的值只有0,1,缺乏文档分级不能进行进行排序
2.精确匹配返回的结果集较少,容易漏掉部分信息
---------------------
作者:柯之梦
来源:CSDN
原文:https://blog.csdn.net/yin4302008/article/details/86103760
版权声明:本文为博主原创文章,转载请附上博文链接!
《从Lucene到Elasticsearch:全文检索实战》学习笔记四的更多相关文章
- 干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践
1.题记 2018年3月初,萌生了一个想法:对Elasticsearch相关的技术书籍做拆解阅读,该想法源自非计算机领域红火已久的[樊登读书会].得到的每天听本书.XX拆书帮等. 目前市面上Elast ...
- 《从Lucene到Elasticsearch全文检索实战》的P184页
curl -XPOST "http://localhost:9200/_bulk?pretty" --data-binary @books.json 这句话在书中是以crul的命令 ...
- LinQ实战学习笔记(四) LINQ to Object, 常用查询操作符
这一篇介绍了下面的内容: 查询object数组 查询强类型数组 查询泛型字典 查询字符串 SelectMany 索引 Distinct操作符 排序 嵌套查询 分组 组连接 内连接 左外连接 交叉连接 ...
- Redis in Action : Redis 实战学习笔记
1 1 1 Redis in Action : Redis 实战学习笔记 1 http://redis.io/ https://github.com/antirez/redis https://ww ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
随机推荐
- Bootstrap3基础 page-header 标题下加分割线
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
- Intellij IDEA 修改默认配置
更新IDEA,是配置无缝对接 idea里面的配置文件主要就idea64.exe.vmoptions,idea.properties 不要更新idea自带的这两个文件,因为在更新IntelliJ IDE ...
- 北京动点飞扬软件招募【Android全职工程师】
要求: 1 至少半年2年以上android开发经验,能力第一,学历不限 2 至少5个以上正规app开发经验 3 项目周期12个月左右,要求一周内到岗 4 有意向者简历请发邮箱372900288@qq. ...
- TCP/IP三次握手和四次挥手
原博链接:https://www.cnblogs.com/Andya/p/7272462.html
- Asp.net core 学习笔记 2.1 升级到 2.2
首先跟着官网 step by step https://docs.microsoft.com/en-us/aspnet/core/migration/21-to-22?view=aspnetcore- ...
- [JSON] 前后台如何通过$.ajax()传输JSON数据
说明:slesecByPriomaryKey是通过empno来获得Emp对象. 前台1: $(function() { $.ajax({ type : "POST", url : ...
- MySQL造数据脚本-亲试
DELIMITER $$CREATE DEFINER=`root`@`192.168.2.254` PROCEDURE `pjzzspdz_fpmx_initdata12101245`()BEGIN ...
- 在python程序中的进程操作
multiprocess模块 multiprocess不是一个模块而是python中一个操作.管理进程的包. 之所以叫multi是取自multiple的多功能的意思,在这个包中几乎包含了和进程有关的所 ...
- Django--QuerySet--基础查询
Django--QuerySet--基础查询 创建模型类: from django.db import models # Create your models here. class Blog(mod ...
- 超简单的实现wordcount
worcount1.0,源码参见GitHub:https://github.com/18382271904/spring_lee_flag.git