全文检索总结

社畜^^ 2020-09-26 08:17:44
一 全文检索理论
1.1为什么需要全文检索-解决数据查询问题
1 海量数据like查询(模糊查询)效率低
2 查询效果不好 搜索java,会把javascript这种不相关的也查出来
3 没有相关度排序
4 没有高亮
5 没有摘要截取

1.2 什么是全文检索
广义:对结构化数据先创建索引,然后从索引中检索的搜索。
狭义:对文本数据的搜索

1.3 优点
1 海量数据查询效率高-基于索引查询
2 查询效果好 按照单词搜索
3 有相关度排序
4 有高亮
5 有摘要截取

1.4 全文检索解决方案
1 java工具包-lucene,中小型项目
2 全文检索服务器(es,sorl等)-大型项目,小型项目也可以

1.5 全文检索核心
创建索引:分词-语法分析-排序-去重等操作
搜索索引: 搜索条件分词-搜索-对结果进行处理

二 入门
2.1 创建项目并且导入jar
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>5.5.0</version>
</dependency>
2.2 创建索引
1)获取IndexWriter
2)创建document对象
3)把document添加到Indexwriter并且提交
4)luke图形界面客户端测试
2.3 搜索索引
1)输入关键字
2)通过关键字封装Query对象
3)创建IndexSearcher
4)把Query传入搜索器进行搜索-命中文档数,文档ids
5)通过文档id获取文档
6)把文档转换为想要对象就ok

三 api详解
1 FsDirectory.open底层平台兼容
2 TextField(分词)&StringFeild(不分词)
3 ik分词器
1 以lib方式导入v5jar
2 简单测试-中英文结合
3 停止词&扩展词
4 分词粒度 true:最大粒度 false细粒度分
4 TearmQuery&BooleanQUery
...全文
7 点赞 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2020-09-26 08:17
社区公告
暂无公告