生活中的搜索
相关的搜索实际上无处不在,比如百度的搜索,Ecplise中的Help搜索,Windows系统中的文件搜索等
我们通常从搜索结果中经常发现有这么一种规律:越是符合条件的搜索结果会放在前面,不太符合条件的搜索结果会排在后面,并且通常会设置字体高亮
数据库检索带来的麻烦
假如我们要进行一次搜索:
场景一:
select * from content where title like '%目标字段';
但是这样搜索会有一个麻烦,就是在数据库中通过like进行模糊查询的话,会让索引失效
场景二:
select * from content where title like '%ant%'
搜索效果不太理想,比如我们想要搜索ant( 蚂蚁),但是搜索出了过多的结果出来,并且我们最想要的结果排在稍后的位置,并没有相关度的排序,客户更想要的是相关度最接近的排在最前面
而要解决这些问题,就要依靠Lucene了
什么是全文检索?
说全文检索之前,必须先说下数据的分类:
- 结构化数据
- 半结构化数据
- 非结构化数据
结构化数据:指的是有固定格式或有限长度的数据,如数据库
半结构化数据:如XML,HTML,它们有自己的标签比如< XX></ XX>,但是< XX>里面写多写少,全看具体需求
非结构化数据;比如word文档,邮件等
非结构化数据有一种叫法叫"全文数据",从全文数据中进行检索就叫全文检索
特点就是:只关注文本,不关心语义
应用场景:比如百度搜索,你去搜索一个“麦当劳在哪里?”,搜索引擎并不会直接给予答案,而是去搜索标题里面含有"麦当劳在哪里"的网页