黑马程序员技术交流社区

标题: 【上海校区】Lucene的基本介绍 [打印本页]

作者: 偷树的光头强    时间: 2019-1-14 20:04
标题: 【上海校区】Lucene的基本介绍

一:Lucene的介绍
1.Lucene即全文检索。
全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置。
当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。
2.搜索引擎构成
    1)爬行和抓取数据(爬虫多用Python来编写)
    2)对数据做预处理(提取文字,中文分词、建立倒排索引)
    3)提供搜索功能(用户输入关键词后,去索引库搜索数据)
3.数据库搜索的处理
    数据库数据单表存储能力有限,无法存储海量数据
    解决大数据,可以进行分库分表。但是分库分表会增加业务复杂度
    搜索只能通过模糊匹配,效率极低
    模糊搜索可能导致全表扫描,效率非常差
4.倒排索引技术
     1)传统查找:采用数据按行存储,查找时逐行扫描,或者根据索引查找,然后匹配搜索条件,效率较差。概括来讲是先找到文档,然后看是否匹配。
     2)倒排索引:首先对文档数据按照id进行索引存储,然后对文档中的数据分词,记录对词条进行索引,并记录词条在文档中出现的位置。
                              这样查找时只要找到了词条,就找到了对应的文档。概括来讲是先找到词条,然后看看哪些文档包含这些词条。
5.搜索引擎的原理



二:Lucene的基本使用
1.创建索引的流程

流程:     1)准备要添加的文档数据:Document     2)初始化索引写出工具:IndexWriter     3)设定索引存储目录Directory     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即创建索引,又会被分词。其它Field会创建索引,但是不会被分词。3.需要注意的问题其实,这里最关键的是弄清楚一个字段:是否需要存储、是否需要索引、是否需要分词。弄清楚这个,就能知道怎么选择API了。
三:索引的基本查询

1.基本流程




实现步骤

2.修改索引



3.删除索引



作者: 一个人一座城0.0    时间: 2019-1-16 09:10
看一看。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2