全文搜索

我们通过前文的简单样例,已经了解了结构化数据的条件搜索;如今。让我们来了解全文搜索-- 如何通过匹配全部域的文本找到最相关的文章。

关于全文搜索有两个最重要的方面:
相似度计算
通过TF/IDF (see 

p=43#relevance-intro" style="border:0px; font-family:inherit; font-style:inherit; margin:0px; outline:0px; padding:0px; vertical-align:baseline; color:rgb(85,85,85); text-decoration:none">[relevance-intro]),地理位置接近算法。模糊相似度算法或者其它算法,用来给给定查询条件的结果排序。

文本分析
通过把文本分割和归一化后的词元。去(a)生成倒排索引,或者去(b)查询倒排索引。
当我们在讨论相似度计算和文本分析的时候,我们仅仅是在讨论查询。而不是过滤

词条搜索 vs. 全文搜索

即使全部的查询都要运行一些相似度排序,可是不是全部的查询条件都须要文本分析。 由于有些特殊的查询就不是在文本上运行的,列如boolfunction_score
它们是boolean查询和数值查询。文本查询能够分为两个种类:
词条查询
低级别的termfuzzy查询没有文本分析,它们仅仅是在单个词条上查询。

列如词条"Foo"term查询,
是在倒排索引种查找全然匹配的词条,然后给每一篇包括这个词条的文章做TF/IDF相似度打分。

记住:词条"Foo"term查询仅仅是在倒排索引里查找全然匹配的词条,它不会匹配到"foo"或者"FOO"
当你在not_analyzed的域用["Foo","Bar"]生成索引。或者在用whitespace分析器的域用"Foo
Bar"
生成索引。 它们都会在倒排索引里生成两个词元"Foo""Bar"

全文查询
高级别的matchquery_string查询可以理解这些域的映射:
* 假设在dateinteger属性的域,查询文本会被当日期或者整数来对待。

* 假设在(not_analyzed)属性的文本域,查询文本会被当做一个词条来查询。 * 可是,假设在(analyzed)属性的文本域,查询文本会用恰当得分析器去产生词条。而这些词条都会被用来查询。

一旦查询得到这些词条。它就用适当的低级查询去运行每个词条,然后用查询结果计算每一篇文章的相似度打分。

我们将在后面的章节中具体介绍这个过程。

通常。你差点儿都不会直接用到基于词元的查询,很多其它的,你会用更方便的高级全文查询(事实上内部是用基于词元的查询)
当你想在not_analyzed域查询全然匹配值的时候,你应该考虑一下你究竟是用查询还是过滤。 由于单词条查询通常被表示为二元值yes|no,所以过滤能更好的表达它们。你能从这里收益的 filter
caching
:
GET /_search
{
"query": {
"filtered": {
"filter": {
"term": { "gender": "female" }
}
}
}
}


博客已搬家

原文链接:

p=43">http://www.callmer.com/?p=43

全文搜索-介绍-elasticsearch-definitive-guide翻译的更多相关文章

  1. 全文搜索之 Elasticsearch

    概述 Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定.可靠.快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的. 特性 安装方便:没有其他依赖,下载 ...

  2. 可以执行全文搜索的原因 Elasticsearch full-text search Kibana RESTful API with JSON over HTTP elasticsearch_action es 模糊查询

    https://www.elastic.co/guide/en/elasticsearch/guide/current/getting-started.html Elasticsearch is a ...

  3. 在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)

    项目中需要搜索, 所以从零开始学习大家都在用的搜索神器 elasiticsearch. 刚开始 google 的时候, 搜到好多经验贴和视频(中文的, 英文的), 但是由于是第一次接触, 一点概念都没 ...

  4. 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot

    ========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...

  5. ElasticSearch搜索介绍四

    ElasticSearch搜索 最基础的搜索: curl -XGET http://localhost:9200/_search 返回的结果为: { "took": 2, &quo ...

  6. 12章 搜索框架ElasticSearch介绍和整合SpringBoot 4节课

    1.搜索引擎知识和搜索框架elasticsearch基本介绍     简介:通过京东电商 介绍什么是搜索引擎,和开源搜索框架ElasticSearch6.x新特性介绍 前言:介绍ES的主要特点和使用场 ...

  7. ElasticSearch 2 (14) - 深入搜索系列之全文搜索

    ElasticSearch 2 (14) - 深入搜索系列之全文搜索 摘要 在看过结构化搜索之后,我们看看怎样在全文字段中查找相关度最高的文档. 全文搜索两个最重要的方面是: 相关(relevance ...

  8. Elasticsearch系列---深入全文搜索

    概要 本篇介绍怎样在全文字段中搜索到最相关的文档,包含手动控制搜索的精准度,搜索条件权重控制. 手动控制搜索的精准度 搜索的两个重要维度:相关性(Relevance)和分析(Analysis). 相关 ...

  9. Elasticsearch全文搜索——adout

    现在尝试下稍微高级点儿的全文搜索——一项传统数据库确实很难搞定的任务. 搜索下所有喜欢攀岩(rock climbing)的雇员: curl -XGET 'localhost:9200/megacorp ...

随机推荐

  1. Visual Studio2015 Community一些必备插件

    Visual Studio2015 Community一些必备插件 是不是感觉虽然VS2015的代码编辑能力已经很强大了,但是总感觉差了那么一些呢?不用担心,它有很多非常强大的插件,能够让你打代码事半 ...

  2. 再谈Cookies欺骗

    在上一篇关于cookies欺骗的随笔中,提到的解决方案是把密码MD5加密之后存入cookies中,确实这种方法实现了效果,不过把密码留在客户端等待着去被破解不是一个合适的方法,在此也感谢 @老牛吃肉 ...

  3. SQL从入门到基础–03 SQLServer基础1(主键选择、数据插入、数据更新)

    一.SQL语句入门 1. SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法. 2. SQL语句中字符串用单引号. 3. SQL语句中,对于SQL关键字大小写不敏感,对于字符串值大小 ...

  4. MySQL慢查询详解

    分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”.   查看/设置“慢查询”的时 ...

  5. iOS 网络与多线程--1.检测网络链接状态

    通过Reachability库,检测设备的网络连接状况. 使用到的类库:Reachability Reachability库,是一个iOS环境下,检测设备网络状态的库,可以在网络上搜索下载. 使用之前 ...

  6. java对象初级知识

    this属于类 方法中没有自己的this指针(本来以为js方法中有,其实并没有里,那是被new出来的function 在声明的时候可以赋初值: int a =12 但不能   int a  ;   a ...

  7. 转发——推荐一些国外高质量Java开发者的博客

    学习Java很不错的一篇博客,总结了很详尽的Java开发者博客. http://www.admin10000.com/document/3373.html 这些博客具有以下特点: 文章的可读性和有独创 ...

  8. Oracle数据库之数据类型

    Oracle数据库之数据类型 Oracle基本数据类型(亦叫内置数据类型,internal datatypes或built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.L ...

  9. JQuery操作下拉框 select

    要实现这种效果: html代码 1<script src="js/jquery-1.7.2.min.js"></script> 2 <table> ...

  10. Windows下更改MySQL数据库的存储位置

    在MySQL安装完成后,要修改数据库存储的位置,比如从安装目录下的C:\Program Files\MySQL\MySQL Server 5.0\Data文件夹转移到D:\mySQLData文件夹. ...