Lucene基本概念

  1. 文档(document):索引与搜索的主要载体,它包含一个或多个字段,存放将要写入索引的或将从索引搜索出来的数据。
  2. 字段(field):文档的一个片段,它包含字段的名称和字段的内容两个部分。
  3. 词项(term):搜索时的一个单位,代表了文本中的一个词。
  4. 词条(token):词项在字段文本中的一次出现,包括词项的文本、开始和结束的偏移以及词条类型。

分析数据

文本分析由分析器来执行,建立在分词器、过滤器和字符映射器之上。

分词器工作的结果称为词条流。

过滤器串联执行,可以一个也可以多个,用于处理分词器的结果。常见的过滤器:小写过滤器、ASCII过滤器(移除词条中所有非ASCII字符)、同义词过滤器(将一个词条转换成另一个词条)、多语言词干还原过滤器。

字符映射器用于分词器之前的文本预处理。比如HTML文本的去标签处理

Lucene查询语言

AND:结果是当且仅当左右两边的词都在文档中出现。例:apache AND lucene 返回同时包含这两个词的文档
OR:包含任意一个词项的文档被返回
NOT:不包含NOT后面的词项的文档被返回。例:Lucene NOT elasticsearch 返回包含Lucene不包含elasticsearch的文档
+:只有包含+后面词项的文档符合。例:+Lucene Apache 包含Lucene Apache无所谓的文档返回
-:不能出现-后面的词项,类似NOT

如果查询中没有出现前面的任意操作符,默认使用OR

词项修饰符

Lucene支持通配符:?和*。出于性能考虑,*不能作为第一个字符。

模糊查询依赖~符号。~后面紧跟一个数字,数字确定近似词项与原始词项的最大编辑距离。而当~跟在短语后的时候,表示词项之间多大的距离是可以接受的。例如:title:"master elasticsearch"~2会匹配master book elasticsearch

此外,Lucene也支持范围查询和词项加权重查询。这些在elasticsearch中都有体现。

elasticsearch基本概念(捡几个重要的)

映射:映射所扮演的角色:存储分析链所需的所有信息。
节点:数据节点、主节点、部落节点(连接多个集群,并可以执行全局查询)

elasticsearch是基于对等架构的,这导致我们不用关心主节点是哪个,任意节点都能处理用户的查询请求。
elasticsearch创建索引的过程只能在主分片上进行,即如果索引请求发到了只有副本的节点,请求会被转发到有主分片的节点,然后再分发到其副本分片。

Elasticsearch致力于隐藏分布式系统的复杂性,以下内容由底层自动完成。

  1. 将你的文档分区到不同的容器或者分片中,他们可以存在于一个或者多个节点中
  2. 将分片均匀的分配到各个节点,对索引和搜索做负载均衡。
  3. 冗余每个分片,防止硬件故障造成的数据损失。
  4. 将集群中任意一个节点上的请求路由到相应数据所在的节点。
  5. 无论增加节点,还是移除节点,分片都可以做到无缝的扩展和迁移。

Elasticsearch_Lucene基础的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. 关于ant引用android第三方工程打包的问题, invalid resource directory name: F:\workspace\Zlib\bin\res/crunch

    转载自 https://zhidao.baidu.com/question/200134399463655885.html invalid resource directory name: F:\wo ...

  2. PHP array_merge_recursive()

    定义和用法 array_merge_recursive() 函数与 array_merge()函数 一样,将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面.并返回作为结果的数组. ...

  3. Linux Rsync实现文件同步备份(转载)

    原文地址:Linux Rsync实现文件同步备份作者:夷北 转自:http://www.mike.org.cn/blog/index.php?load=read&id=639###pp=0 [ ...

  4. Tomcat手工搭建Jsp和Servlet程序

    要执行J2EE的程序,就必须安装相关的容器.而怎样选择JSP+Servlet模式.Tomcat是非常重要的选择之中的一个,是世界上最为广泛的Servlet和JSP容器. 下载: 1. URL: htt ...

  5. 具体解释clone函数

    我们都知道linux中创建新进程是系统调用fork,但实际上fork是clone功能的一部分,clone和fork的主要差别是传递了几个參数.clone隶属于libc.它的意义就是实现线程. 看一下c ...

  6. 在VM中安装Android4.4连接小米手机 之 安装小米手环APP

    1.下载APP 在能够上网的情况的,搜索 小米手环APP就能够找到下载地址 2.安装APP 进入终端 3.在终端按下图红色区域语句依次输入. 先进入超级用户 找到下载的APP所在的路径 然后进入该路径 ...

  7. 【POJ 2777】 Count Color(线段树区间更新与查询)

    [POJ 2777] Count Color(线段树区间更新与查询) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4094 ...

  8. bzoj3332: 旧试题

    这题就是最大生成树. 把两个点之间的期望建边排序. 把相同的期望一起做,那么在这个做之前,这些有着相同期望的点两两肯定不连,否则就输出No了. 相同的做完之后,再次for一遍check一下有没有两两之 ...

  9. bzoj 2465 小球

    题目大意: 给定n个不同颜色的球,每个球都有一个分数,同时有m个瓶子,每个瓶子都有固定的容量 必须把球放到瓶子里面 计算最多能放多少个球到这些瓶子里 思路: 开始想的是费用流 超级源向每个球连一条 容 ...

  10. bzoj3105 [cqoi2013]新Nim游戏——贪心+线性基

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3105 首先,要先手必胜,就不能取后让剩下的火柴中存在异或和为0的子集,否则对方可以取成异或和 ...