🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 简介 先创建索引然后查询索引的过程叫做全文检索. # 索引和搜索流程图 ![](https://img.kancloud.cn/50/eb/50eb7517b2a26c44fe837dea241f5fe9_781x247.png) 1. 绿色表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括: 确定原始内容即要搜索的内容->采集文档->创建文档->分析文档->索引文档 2. 红色表示搜索过程,从索引库中搜索内容,搜索过程包括: 用户通过搜索界面->创建查询->执行搜索,从索引库搜索->渲染搜索结果 ## 创建文档对象 获取原始内容的目的是为了索引,在索引前需要将原始内容创建成文档(Document),文档中包括一个一个的域(Field),域中存储内容。 这里我们可以将磁盘上的一个文件当成一个document,Document中包括一些Field(file\_name文件名称、file\_path文件路径、file\_size文件大小、file\_content文件内容) ![](https://img.kancloud.cn/42/e6/42e6a73b65168af06ae6c462fca07ffe_701x436.png) 注意:每个Document可以有多个Field,不同的Document可以有不同的Field,同一个Document可以有相同的Field(域名和域值都相同) 每个文档都有一个唯一的编号,就是文档id。 ## 分析文档 就是分词的过程 1. 根据空格进行字符串拆分,得到一个单词列表 2. 把单词统一转换成小写 3. 去除标点符号 4. 去除停用词(无意义的词) 5. 每个单词都封装一个Term对象. Term对象包含两个部分:关键词所在的域,关键词本身. 不同的域中拆分出来的相同的关键词是不同的Term ![](https://img.kancloud.cn/06/18/0618b12772bbbd93dbb81a3aa5cb128b_649x392.png) ## 创建索引 基于关键词列表创建一个索引.保存到索引库中. 索引库中: 索引,document对象,关键词和文档的对应关系 通过词语找文档,这种索引的结构叫倒排索引结构 ![](https://img.kancloud.cn/60/af/60af2d9fe0fb9ba7be61e3813cf19ef9_981x283.png) ## 创建查询 用户输入查询关键字执行搜索之前需要先构建一个查询对象,查询对象中可以指定查询要搜索的Field文档域、查询关键字等,查询对象会生成具体的查询语法, 例如: 语法 “fileName:lucene”表示要搜索Field域的内容为“lucene”的文档