全文检索
一种将文件种或者数据库中所有文本与检索项匹配的文字资料检索方法。对全文数据的检索
数据分类:
-
结构化数据
行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据 能够用数据或统一的结构加以表示 数字、符号去表示
-
非结构化数据
无法用数字或统一的结构表示 文本、图像、声音、网页 结构化数据属于非结构化数据 非结构化数据即为全文数据
两种方法
-
顺序扫描法
将数据库中所有的内容挨个扫描
-
索引扫描法
全文检索的基本思路,也即将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。
全文检索过程
-
索引创建
索引保存的是一个词元,对应文档的id 索引只会创建一次
如何创建:
一些要索引的原文档(Document)
将原文档传给分词组件(Tokenizer)
将得到的词元(Token)传给语言处理组件(LinguisticProcessor)
将得到的词(Term)传给索引组件(Indexer)
- 搜索索引
用户输入查询语句
对查询语句进行词法分析,语法分析,及语言处理
搜索索引,得到符号文档
全文检索引擎
全文检索引擎是目前广泛应用的主流搜索引擎。
它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。
相关产品
Lucene,Sphinx,Xapian,Nutch,DataparkSearch...
ElasticSearch
ElasticSearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的,功能最全的搜索引擎库。
为什么要选择ElasticSearch
ElasticSearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
分布式的实时文件存储,每个字段都被索引可被搜索
分布式的实时分析搜索引擎
可以扩展到上百台服务器,处理PB级结构化或非结构化数据
所有功能都集成在一个服务里面,可以通过RESTful API、各种语言的客户端甚至命令行与之交互
上手容易,提供了很多合理的缺省值,开箱即用,学习成本低
可免费下载、使用和修改 配置灵活