Lucene > 概念
来源:互联网 发布:西门子300编程电缆 编辑:程序博客网 时间:2024/06/05 15:47
《大型分布式网站架构设计与实践》学习笔记
1.垂直化搜索引擎
垂直化搜索引擎,与Google、Baidu等互联网搜索引擎存在差异,前者主要针对企业内自有数据的检索,后者则是采用网络爬虫对全网数据进行抓取,建立索引供用户进行检索。
在分布式系统中,垂直化索引既能满足用户对全文检索、模糊匹配的需求,解决数据库like查询效率低下的问题,又能解决分布式环境下,由于采用分库分表或NoSQL数据库,而无法进行复杂联合查询的问题。
2.搜索引擎中的概念
1.倒排索引(inverted index)
倒排索引是搜索引擎中最常见的数据结构,几乎所有的搜索引擎都会用到倒排索引。它将文档中的词作为关键字,建立词与文档的映射关系,通过对倒排索引的检索,可以根据词快速获取包含这个词的文档列表。
2.分词
即将句子或段落切割,从中提取出包含固定词义的词。对于英语来说,语言的基本单位就是单词,所以分词很容易,只需要根据空格/符号/段落进行分割,并且排除停用词,提取词干即可完成。
中文以字为最小单位,多个字连在一起才能构成一个表达具体含义的词,中文会用明显的标点符号来分割句子和段落,唯独词没有一个形式上的分割符,因此,对于中文分词来说需要一个合适的中文分词器。
3.停用词
一些词出现频率比较高,但没有索引的价值,比如英语的 a、the、and,中文的“的”、“在”、“了”,搜索引擎对这些做索引没任何意义,因此,停用词需要被忽略掉。
4.排序
当输入一个关键字搜索时,可能会命中许多文档,搜索引擎给用户的价值就是快速的找到需要的文档,因此,需要将相关度更大的内容放在前面,以便用户能够更快地筛选出有价值的内容,这时需要适当的排序算法。
3.Lucene中的概念
1.文档(Document)
在lucene中,文档是一系列域(Field)的组合,而文档的域代表一系列与文档相关的内容。和数据库表的概念有些类似,一行记录所包含的字段对应的就是文档的域。比如,一个文档,比如一个老师的个人信息,可能包括年龄、身高、性别、个人简介等内容。
2.域(Field)
索引的每个文档中都包含一个或者多个不同名称的域,每个域都包含了域的名称和对应的值,而且域还可以是不同的类型,如字符串、整型、浮点型等;
3.词(Term)
Term是搜索的基本单元,与Field对应,它包括了搜索的域的名称以及搜索的关键字,可以用它来查询指定域中包含特定内容的文档。
4.查询(Query)
5.分词器(Analyzer)
文档在被索引之前,需要经过分词器处理,以提取关键的语义单元,建立索引,并剔除无用的信息,如停用词等,以提高查询的准确性。
4.索引构建与查询的过程
1)构建
Lucene索引的构建过程大致分为这样几个步骤,通过指定的数据格式,将Lucene的Document传递给分词器Analyzer进行分词,经过分词器分词后,通过索引写入工具IndexWriter将索引写入指定的目录。
2)查询
首先构建Query,通过IndexSearcher进行查询,得到命中的TopDocs,然后通过TopDocs的scoreDocs()方法,拿到ScoreDoc,通过ScoreDoc,得到对应的文档编号,IndexSearcher通过文档编号,使用IndexReader对指定目录下的索引内容进行读取,得到命中的文档后返回。
- Lucene > 概念
- lucene整理1 -- 概念
- lucene -- 1概念
- lucene(一) lucene一些概念的理解
- lucene的几个重要概念
- lucene学习之基础概念
- Lucene 概念,定义应用场景
- 理解lucene内几个核心概念
- 【转载】lucene整理 -- 概念 搜索 排序
- Lucene 里常用类的概念
- 全文检索概念,Lucene大致结构
- lucene.net的一些基本使用方法和概念
- lucene.net的一些基本使用方法和概念
- lucene.net的一些基本使用方法和概念
- lucene.net的一些基本使用方法和概念
- 从概念理解Lucene的Index(索引)文档模型
- 从概念理解Lucene的Index(索引)文档模型
- 从概念理解Lucene的Index(索引)文档模型
- HTML <script>标签的type类型
- CSS的居中问题
- Java SSH远程执行Shell脚本实现
- STM32_SPI多机通信的实现——整理自网络
- 关于handler的用法(防止内存泄露)
- Lucene > 概念
- java中volatile关键字的含义
- Android 开发笔记
- MySQL主从复制,双机热备实战
- Linux 文件路径查询命令(find、locate、which、whereis)
- android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注
- set集合去重复
- C#动态创建类实例并动态调用指定的函数
- ScrollView嵌套Linearlayout显示不全的解决办法