Lucene搜索入门教程
1. 了解搜索技术
1.1搜索引擎
搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。
搜索引擎的原理
可以看到搜索引擎的功能主要是三部分:
爬行和抓取数据(爬虫多用python来编写、但是java也能实现)
对数据对预处理(提取文字、中文分词、建立倒排索引)
提供搜索功能(用户输入关键词后、去索引库搜索数据)
在上述三个步骤中,java要解决的往往是后两个步骤:数据处理和搜索。那么,我们之前学习的mysql知识也能实现数据的存储和搜索,为什么还要学新的东西呢?
1.2 传统数据库搜索的问题
program汉语
要实现类似百度的复杂搜索,或者京东的商品搜索,如果使用传统的数据库存储数据,那么会存在一系列的问题:
分布式架构和集中式架构的区别数据库数据单表存储能力有限,无法存储海量数据that怎样读
解决大数据,可以进行分库分表。但是分库分表会增加业务复杂度
eclipse怎么导入项目包搜索只能通过模糊匹配,效率极低
模糊搜索可能导致全表扫描,效率非常差
在这里,比较棘手的其实是第二个问题:查询效率低,类似百度和京东这样的网站,对性能要求极高。如果用户点击搜索需要很久才能拿到数据,没人愿意一直等待下去。
css输入框样式
那么问题来了:如何才能提高模糊搜索时的效率呢?
答案是:倒排索引技术
1.3 什么是倒排索引
python入门教程非常详细word倒排索引是一种存储数据的方式,与传统查有很大区别:
传统查:采用数据按行存储,查时逐行扫描,或者根据索引查,然后匹配搜索条件,效率较差.概括来讲是先到文档,然后看是否匹配.
传统线性查一个10MB的word文件,查关键字如果在文档最后,大约3秒钟
倒排索引:首先对文档数据按照id进行索引存储,然后对文档中的数据分词,记录对词条进行索引,并记录词条在文档中出现的位置。这样查时只要到了词条,就到了对应的文档。概括来讲是先到词条,然后看看哪些文档包含这些词条。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。