博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch:准确值与全文本
阅读量:6040 次
发布时间:2019-06-20

本文共 1229 字,大约阅读时间需要 4 分钟。

hot3.png

概括地说,Elasticsearch将数据分成两类:准确值(Exact values)和全文本(Full text)。

准确值就是它们听上去的那样。诸如日期或用户ID。当然字符串也可以是准确值,如用户名或邮件地址。准确值Foo与准确值foo是不同的。准确值2014和准确值2014-09-15也是不同的。

 

另一方面,全文本(full text)指的是通常用人类语言写的文本数据,像一条tweet的文本或一封邮件的内容。

全文本也经常被称为非结构化数据(unstructured data)。这个定义并不十分恰当,因为自然语言是高度结构化的。问题在于自然语言的规则是非常复杂的,以至于计算机很难正确地解析它们。例如以下句子:May is fun but June bores me.

请问,May 和 June到底指的是月份还是人?

准确值非常容易查询。因为它要么匹配查询条件,要么不匹配。像下面这种查询就很容易使用SQL来表达:

     WHERE name = "John Smith"

          AND user_id = 2

          AND date > "2014-09-15"

相对准确值查询,全文查询更为微妙。我们不会只问:“这份文档是否能匹配这次查询”,而是问:“这份文档有多匹配这次查询”。换种说法,这份文档与这次查询有多相关

我们很少对整个全文文本字段(full-text field)进行准确匹配。取而代之,我们会想去查询存在里面的文本字段。不过不只这种方式,我们期望搜索引擎能理解我们的意图:

     * 当我们搜索UK时,它应该还会返回提到United Kingdom的文档

     * 当我们搜索jump时,它应该还会匹配jumped、jumps、jumping,甚至leap

     * jhnny walker 应该还会匹配Johnnie Walker。 而johnnie depp应该匹配到Johnny Depp。

     * fox news hunting应该返回在Fox News上的关于hunting的故事。而fox hunting news应该返关于fox hunting的新闻。

为了使这种全文搜索更容易,Elasticsearch首先对文本进行分析,然后使用分析结果构建反向索引(inverted index)。接下来的两节,我们将讨论反向索引和这个分析过程。

小结

一开始学习信息检索时,很容易地就认为SQL语句不是完全可以实现搜索功能了么。后来学习到全文检索和反向索引,就明白信息检索背后还需要很多不同的技术来支持,如分词技术、索引、自然语言处理等。

说回来,目前我学习到,使用的都是“索引”思路来解决搜索问题。那么是不是存在另一些人们不知道的信息检索思路?这里说的索引思路,指的是使用某种方法抽取出待搜索物的特征,查询时,只要与这些特征比较就可以哪些待搜索物匹配查询了。

转载于:https://my.oschina.net/zjzhai/blog/421207

你可能感兴趣的文章
产生随机数
查看>>
在LINUX下玩转Windows软件
查看>>
WebCast收听辅助工具介绍
查看>>
服务器开机自动发送短信到手机
查看>>
有关WINDOWS XP登录密码的几种方法
查看>>
开源安全信息管理系统——OSSIM安装
查看>>
Ophone平台便捷呼叫功能实现原理
查看>>
与MySQL传统复制相比,GTID有哪些独特的复制姿势?
查看>>
Android文件搜索及辅助输入详解
查看>>
反射创建对象,创建泛型集合,创建泛型字典
查看>>
活动目录中的Get-Aduser这个cmdlets调用的是账户的哪个属性?
查看>>
qq个性签名1
查看>>
提高 SharePoint 页面访问速度之应用池预加载
查看>>
git版本回退, github版本回退
查看>>
Exchange 2010 双机热备配置
查看>>
Finalization
查看>>
[C++]遍历可变参数 (va_list)
查看>>
微信公众号技巧之《按手印》
查看>>
集合的划分(2)
查看>>
sitemap数据提供程序
查看>>