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. Leetcode 76.最小覆盖子串

    最小覆盖子串 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBANC", T = "A ...

  2. hammerjs & Swiper & touch & gesture

    hammerjs https://hammerjs.github.io/getting-started/ http://hammerjs.github.io/recognizer-swipe/ Swi ...

  3. 【BZOJ2081】Beads(哈希表)

    题意: 翻转是指其中一段长度为k的子串全部翻转 n<=200000 a[i]<=n 思路:枚举k,直接哈希判充即可 时间复杂度是n/i求和,根据定理可得是O(n log n)级别的 单哈双 ...

  4. The Evaluation of Determinant(求行列式mod一个数的值)

    #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #i ...

  5. HDU 1546 Idiomatic Phrases Game 求助!help!!!

    Idiomatic Phrases Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  6. TreeView获取目录下的所有文件

    /// <summary> /// TreeView获取目录下的所有文件 /// </summary> /// <param name="tree"& ...

  7. C++对象模型——&quot;无继承&quot;情况下的对象构造(第五章)

    5.1 "无继承"情况下的对象构造 考虑以下这个程序片段: 1 Point global; 2 3 Point foobar() 4 { 5 Point local; 6 Poin ...

  8. eclipse 自己主动为getter和setter加入中文凝视

    在我们使用eclipse进行开发的时候经常会使用到eclipse自己主动生成getter和setter的功能,然后大多情况下eclipse为我们生成的getter和setter都是无法在项目中使用的. ...

  9. Codeforces Round #250 (Div. 2)B. The Child and Set 暴力

    B. The Child and Set   At the children's day, the child came to Picks's house, and messed his house ...

  10. Delphi中ARC内存管理的方向

    随着即将发布的10.3版本,RAD Studio R&D和PM团队正在制作Delphi在内存管理方面的新方向. 几年前,当Embarcadero开始为Windows以外的平台构建新的Delph ...