全文检索
2018-02-28 10:22
190 查看
案例分析:什么是全文检索,如何实现全文检索
本案例中的原始内容就是磁盘上的文件,如下图:
为什么数据库搜索很容易?
因为数据库中的数据存储是有规律的,有行有列而且数据格式、数据长度都是固定的。
结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等磁盘上的文件
这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。
虽然创建索引的过程也是非常耗时的,但是索引一旦创建就可以多次使用,全文检索主要处理的是查询,所以耗时间创建索引是值得的。
1 搜索需求分析
1.1. 案例demo
实现一个文件的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字的文件都需要找出来。还可以根据中文词语进行查询,并且需要支持多个条件查询。本案例中的原始内容就是磁盘上的文件,如下图:
1.2. 数据库搜索
数据库中的搜索很容易实现,通常都是使用sql语句进行查询,而且能很快的得到查询结果。为什么数据库搜索很容易?
因为数据库中的数据存储是有规律的,有行有列而且数据格式、数据长度都是固定的。
1.3. 数据分类
数据总体分为两种:结构化数据和非结构化数据。结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等磁盘上的文件
2 非结构化数据查询方法
2.1 顺序扫描法(SerialScanning)
所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。如利用windows的搜索也可以搜索文件内容,只是相当的慢。2.2 全文检索(Full-textSearch)
2.2.1 索引
将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。2.2.2 概念
例如:字典。字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有几种可以一一列举,于是将读音拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释。这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。
虽然创建索引的过程也是非常耗时的,但是索引一旦创建就可以多次使用,全文检索主要处理的是查询,所以耗时间创建索引是值得的。
2.2.3 如何实现全文检索
可以使用Lucene实现全文检索。Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。2.2.4 应用场景
对于数据量大、数据结构不固定的数据可采用全文检索方式搜索,比如百度、Google等搜索引擎、论坛站内搜索、电商网站站内搜索等。相关文章推荐
- 基于MySQL数据库的UTF8中文网站全文检索的实现
- Lucene全文检索基础
- Elasticsearch全文检索企业开发记录总结(四):数据同步
- 织梦DedeCMS v5.7全文检索使用说明
- 框架 day71 Solr 全文检索服务 入门
- 看完“最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用” 有感
- Django的全文检索功能(一):haystack全文检索的框架
- 对CLOB字段执行全文检索的比较
- ]NET Core Lucene.net和PanGu分词实现全文检索
- lucene--1.lucene实现全文检索的流程
- lucene全文检索初体验-lucene demo演示
- sphinx+scws 全文检索使用之 sphinx配置增量索引及sphinx管理命令
- 讯搜全文检索引擎-服务器部署
- java-mongodb实现全文检索
- solr全文检索实现原理
- lucene全文检索案例――0.2秒检索50万数据
- Lucene:基于Java的全文检索引擎简介
- 试试sphinx - 全文检索工具
- Elasticsearch2.x 全文检索之——Match转换Bool Query
- 让Linq To NHibernate支持Sql Server自带的全文检索