关于lucene的具体概念和使用,本文不做具体的概述,具体通过一下三点探讨一下lucene全文检索与数据库查询的一些区别
1:性能上
数据库:比如我要查找某个商品,根据商品名,比如select * from product where doctname like %keywords%,这样查询的话对于数据量少是可以的,可是一旦你的数据量巨大几万几十万的时候,你的性能将会极大的减弱。
lucene:全文检索,建立一个索引库,一次建立多次使用。在索引库里面会把所有的商品名根据分词器建立索引,就好比新华字典,索引对应document,比如输入衬衫,那么就会根据索引迅速的翻到衬衫对应的商品名,时间迅速,性能很好。
2:相关度排序
数据库:数据库要实现该功能也是可以的,可是需要改变表的结构,添加一个字段,然后该字段用于排名,最后查询的时候order by 一下
lucene:查询出来的document都有一个算法(得分),根据算法可以计算得分,得分越高的排名越靠前,比如百度搜索一个东西,一般排名靠前的得分越高,得分通过算法,可以人工控制,比如百度推广,企业给的钱多得分自然高,因此排名靠前
3:准确性
数据库:select * from product where doctname like %ant%,搜索出来的可以是plant,aplant,planting等等,准确性不高
lucene:它是通过索引查询的,就好像你查字典一样,准确性比数据库的模糊查询高许多