您的位置:主页 > 互联网新闻 >
互联网新闻

Lucene的基本介绍

2019-01-15

原标题:Lucene的基本介绍

一:Lucene的介绍

1.Lucene是全文搜索。

全文搜索是一种计算机程序,它通过扫描文章中的每个单词来创建每个单词的索引,指示文章中单词的数量和位置。

当用户查询时,它根据建立的索引进行搜索,这类似于通过字典搜索单词的过程。

2.搜索引擎组成

1)抓取并抓取数据(抓取工具用Python编写)

2)预处理数据(提取文本,中文分词,构建倒排索引)

3)提供搜索功能(用户输入关键字后,转到索引库中搜索数据)

3.数据库搜索处理

数据库数据表存储容量有限,无法存储海量数据

要解决大数据,可以执行子数据库子表。但是子数据库子表会增加业务复杂性

搜索只能通过模糊匹配来完成,这是非常低效的

模糊搜索可能导致全表扫描,这是非常低效的

4.倒置索引技术

1)传统搜索:数据存储在行中,在搜索时逐行扫描,或根据索引搜索,然后匹配搜索条件,这是低效的。简而言之,首先找到文档并查看它是否匹配。

2)倒排索引:首先,根据id索引文档数据,然后在文档中对数据进行分段,索引索引,并记录文档中条目的位置。

当您以这种方式找到条目时,您将找到相应的文档。总之,首先查找术语,然后查看哪些文档包含这些术语。

5.搜索引擎原理

二:Lucene的基本使用

1.创建索引的过程

流程:1)准备要添加的文档数据:文档2)初始化索引写入工具:IndexWriter 3)设置索引存储目录目录4)设置其他配置:IndexWriterConfig 5)设置断字符:Analyzer 6)设置Lucene版本7)写入索引2.创建索引的细节1.覆盖或追加三种模式1.1 CREATE:每次写入覆盖以前的数据1.2 APPEND:不覆盖数据,但使用以前的索引数据并附加1.3 CREATE_OR_APPEND:创建一个新的一个如果它不存在,并附加数据(如果它存在)

2.Filed字段类型2.1必须索引由子类(如DoubleField,FloatField,IntField,LongField,StringField和TextField)创建的字段。但不一定会存储在文档列表中。要在构造函数中通过参数Store指定:2.2 Store.YES表示存储,也会在搜索结果中显示2.3 Store.NO表示未存储,无法在搜索结果中显示2.4 TextField来创建索引,并将分词。其他字段将创建索引,但不会被分段。3.需要注意的问题

问题1:此字段是否需要创建索引? 如果需要基于此字段进行搜索,则此字段需要创建索引。 无需创建索引:使用StoreField类型 需要创建索引:使用StoreField以外的类型 问题2:是否需要存储此字段? 如果要在最终结果中显示某个字段,则必须将其存储,否则将不会存储该字段。 存储,使用StoreField或其他类型字段,但构造函数的第三个参数必须是Store.YES不存储,必须使用StoreField以外的字段,构造函数的第三个参数必须是Store.NO 问题3:此字段是否需要分词? 必须首先搜索此字段,以便删除StoreField。然后,如果该字段的值不可分割,则不需要分词,例如:ID;否则,需要分词。 需要分词:使用TextField 不需要分词:使用除TextField之外的其他几种类型

事实上,最重要的是找出一个字段:是否需要存储,是否需要索引,是否需要分词。了解这一点,您就可以知道如何选择API。

三:索引的基本查询

1.基本流程

创建索引搜索工具 指定索引目录 创建一个读取流工具 创建搜索工具 创建查询条件 创建一个查询解析器 解析用户搜索语句以获取查询条件对象 搜索并解析结果

实现步骤

第一步:创建一个Directory对象,它是索引清单的位置。 步骤2:创建indexReader对象并指定Directory对象。 第三步:创建一个indexsearcher对象,需要指定IndexReader对象 步骤4:创建Query的子类对象,指定查询的域和查询的关键字。 第5步:执行查询。 第6步:返回查询结果。遍历查询结果和输出。 第7步:关闭IndexReader对象

2.修改索引

创建索引以写出对象 指定的目录 组态 创建文档 更新数据

3.删除索引

创建索引编写工具 创建删除条件 删除
上一篇:神舟信息:数据驱动的产业升级,向祖国70周年的生日致敬(第二部分)
下一篇:没有了

Lucene的基本介绍 相关的内容: