分词 analyzers
分词比较好理解,我们可以理解为把一个句子分成一个可能的词组成的数组。
比如:“为了保证用户不受到骚扰” 这个句子可能组成的数组为["为了","保证","用户","不受","到","骚扰"],这样的操作就是分词。
市场上已有现成的分词工具类,不用我们去写这个算法。
索引 index
Lucene 中最重要的对象,搜索就是基于它来操作的。
Lucene 的索引主要就是把我们需要搜索的内容进行分词,然后根据这些分词来建立索引文件。
Lucene 的索引就像我们mysql数据库中的一个数据对象一样。
Lucene 创建索引的步骤:
- 指定一个存放索引的目录
- 创建一个索引写入类,用于写入索引和数据对象到索引目录中
- 创建存放数据的类型,指定是否需要存储、是否分词、是否建立索引等
- 创建存放数据的文档,把数据按照类型存放进去
- 把文档添加到到索引中
- 保存索引和数据到索引目录
文档 document
文档表示我们的一条条的数据对象,主要负责存储数据。
索引最终也是指向这些文档的,因为我们最终目标就是找到这些数据。
搜索 search
搜索就是根据指定的语法去 Lucene 的索引中搜索数据的一个过程。
Lucene 搜索的步骤:
- 获取搜索的关键字
- 根据传入的字段和关键字进行组装搜索语法
- 根据搜索语法到索引中查询得到索引指向的文档编号
- 根据文档编号的信息查询出文档数据对象