lucene 添加扩展词需要重新索引_java学习:全文检索引擎Lucene(2)创建索引库,查询索引,分析器,Field种类...

使用java操作lucene

使用lucene创建索引库

package 

dc272ca30bb112f9b43c026a17c51f51.png
原始文档

3a634fb02d52d25e8dd12611328874ae.png
生成的索引库

生成的索引库是二进制文件,可以通过 luke工具查看

1c7e5bcf71c43561d85145adbdaa3c30.png

关键词列表

01423d10a797dafe283162c637f0c5e9.png

每个文档的内容

fb0da735b667ce4624bc2696e2ec9467.png

查询保存的索引

public 

查询结果如下

9537964c8e335e1ab86823cac16ce7b2.png

分析器

关于分析器

IndexWriterConfig 默认使用标准分析器 StandardAnalyzer

public IndexWriterConfig() {

this(new StandardAnalyzer());

}

查看标准分析器的分析效果

public 

分析效果

4b3e738eebdf4fa0bd34f20f0240601e.png

标准分析器对中文支持不太好,可以使用第三方 IKAnalyzer 分析器

使用 IKAnalyzer 需要将配置文件和扩展词典添加到工程的classpath下

扩展词典严禁使用win记事本编辑,需要保证 utf-8格式

扩展词典可以添加一些新词

停用词词典可以是一些无意义的词或者是敏感词

bf10599f8c3025360cc76ab5ff5bc659.png
Analyzer 

可以自行添加扩展词典和停用词词典

0208750af3255a96ef60da8e566187c0.png

使用新的分析器重新创建索引库

IndexWriterConfig 

716da55ac5008fab2e80a2d1d728846e.png

Field的选择

1 StringField(FieldName, FieldValue,Store.YES))

数据类型 字符串,一般不分析,可以索引和储存

2 LongPoint(String name, long... point)

数据类型 Long型,一般分析和索引,不储存

3 StoredField(FieldName, FieldValue)

一般只储存,不分析和索引

4 TextField(FieldName, FieldValue, Store.NO) 或 TextField(FieldName, reader)

数据类型 字符串或流,一般分析、索引且储存

之前的Field可以改为

Field 

这时path和size两个Field中的term为空,不参与分析

0042b810cf1a870e80a2b96e49fca3a7.png

但由于我们使用StoredField储存了这两个值,所以是可以取出来的

ca40f7e64c4023f6e0a5587cb08e80b2.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值