译自http://www.lucenetutorial.com/basic-concepts.html。

基本原理

Lucene是一个java全文检索引擎库,方便我们在应用或是网站中加入检索功能。

Lucene提供全文检索功能的原理是:将可被检索的内容加入到全文检索索引中,并提供对该索引的查询接口,返回排序后的查询结果,排序的依据既可以是与查询语句的相关度,也可以是某一任意字段例如文档的更新时间。

可被检索的内容可以有很多种来源,例如SQL/NoSQL数据库、文件系统,甚至包括网站。

检索和索引(Searching and Indexing

Lucene能够得到快速的检索响应是因为索引机制,它并不直接检索文本,而是对索引进行检索。这种机制类似于从一本书中根据关键字找出相关页面时,通过书末尾的索引找到,而非对书的每一页查找关键字。

(注:例如在一个书中查找包含关键字“北京”的页,索引机制会利用书后的索引“北京:18,27”得到结果,而非遍历每一页找符合条件的页)

这种索引被称为“倒排索引”,因为它将以页面为中心的数据结构(page->words)转变成了以关键字为中心的数据结构(word->pages)。

文档(document)

在Lucene中,文档(Document)是进行查找和索引的单元。

一个索引包含一个或多个文档。

建立索引(Indexing)主要涉及将document加入到IndexWriter,检索(Searching)主要涉及利用IndexSearcher从index中抽取document。

Lucene中的document并不一定是通常意义上由英语单词构成的文档。比如你给数据库中的用户表创建了一个lucene索引,索引中的每个用户可以被看做是一个Lucene document。

字段(fields)

一个document由多个field构成。一个field简单来说是一个名值对(name-value)。例如,在应用中常见的一个field是title。对于title字段,名是title,对应的值为title标题中包含的内容。

Lucene的建立索引涉及创建包含多个field的document,并且将document加入到IndexWriter中。

检索(Searching)

检索的前提要求是索引已被创建。检索包含创建query对象(一般用QueryParser接口),创建IndexSearcher对象,并利用query对象,返回匹配结果。

查询(Queries)

Lucene有其自己的迷你语言来执行查询。请到lucene查询语法。

Lucene查询语法允许用户指定哪些field可以被检索,哪些field需要给定更高的权重,也提供了布尔查询功能和其他的功能。

转载于:https://blog.51cto.com/mumufairy/1611417

Lucene中的一些基本概念相关推荐

  1. 浅谈Lucene中的DocValues

    2019独角兽企业重金招聘Python工程师标准>>> 前言: 在Lucene4.x之后,出现一个重大的特性,就是索引支持DocValues,这对于广大的solr和elasticse ...

  2. Elasticsearch 入门到精通-Elasticsearch中的一些重要概念:cluster, node, index, document, shards及replica

    首先,我们来看下一下如下的这个图: 1.Cluster Cluster也就是集群的意思.Elasticsearch集群由一个或多个节点组成,可通过其集群名称进行标识.通常这个Cluster 的名字是可 ...

  3. Lucene中倒排索引原理

    1.简介 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址.由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引 ...

  4. Elasticsearch 中的一些重要概念: cluster, node, index, document, shards 及 replica

    当我们开始使用 Elasticsearch 时,我们必须理解其中的一些重要的概念.这些概念的理解对于以后我们使用 Elastic Stack 是非常重要的.在今天的这篇文章里,我们先来介绍一下在 El ...

  5. fst 共享后缀_谈谈lucene中的FST

    FST是lucene中用来存储字典,并进行检索的核心数据结构,我记得在lucene3.0版本前都用的是跳跃链表(不清楚的同学以后我会专门写一篇磁盘索引技术来说清楚,网上也有相关资料),实际上采用该数据 ...

  6. 【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类...

    目录: [C#小知识]C#中一些易混淆概念总结 [C#小知识]C#中一些易混淆概念总结(二) ---------------------------------------分割线----------- ...

  7. 9 单元测试中不得不知的概念

    单元测试中不得不知的概念 前言 软件单元及单元测试 驱动函数和桩函数 总结 前言 做单元测试,如果不弄清楚什么是单元,那十八般武器也无的放矢了.可能在单元测试中听到最多的就是驱动函数.桩函数和逻辑覆盖 ...

  8. 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  9. C++中继承的基本概念

    文章目录 1 C++中继承的基本概念 1.1 继承的基本概念 1.2 继承的意义 1.3 继承实例分析 1 C++中继承的基本概念 1.1 继承的基本概念 继承关系就是父子关系,UML图如下: 注意是 ...

最新文章

  1. 两家外企的长三角仓库,活儿竟全被中国机器人承包了
  2. lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串
  3. Python中xPath技术和BeautifulSoup的使用
  4. java guava cache_java使用guava cache实现本地缓存
  5. 18.Argument replacement
  6. 基于LOAM框架的激光SLAM开源程序汇总
  7. 根据业务单生成时将描扫记录触发到临时表(SQL触发)
  8. fft 估计载波频率程序_调幅信号载波频率的高精度估计方法及装置与流程
  9. java socket 发对象_Java Socket 发送对象
  10. 用matlab求雅可比迭代法,基于matlab的jacobi(雅可比)迭代法求解线性方程组
  11. 给vmware7虚拟机xp整理磁盘碎片
  12. C/C++中substr函数的应用(简单讲解)
  13. 配置console口认证(华为/思科)
  14. codeforces gym 101142G Gangsters in Central City
  15. Rockwell 罗克韦尔AB Logix 5000控制器 结构化文本语言(ST) 梯形图(LD)顺序功能图(SFC)功能块图(FBD) IEC 61131-3 手册
  16. 量化交易 米筐 策略初始设置与运行流程
  17. 洛谷P1618 Java解法
  18. 使用realsensed455修改分辨率问题
  19. Linux网络配置bond模式
  20. NTP和Crontab

热门文章

  1. OpenStack安装流程(juno版)- 添加镜像服务(glance)
  2. python 黑客书籍 ——扫描+暴力破解
  3. 【fabric实战指南二】Fabric v1.0 部署过程原理详解
  4. [日常] Go语言圣经-GIF动画练习语法
  5. WLAN 无线网络 02 - 频率、信道、编码、调制
  6. shell 结束指定端口
  7. 静态内容负载均衡的具体实现-续《几百元搞定大型网站》
  8. QT 按钮(4种样式)
  9. 计算复杂数学表达式的值
  10. Sparkstreaming实时开发详解