浏览器韩国服务器地址描述::
在了解Lucene之前,我们先看下什么是搜索引擎?
在实际的项目中,我们可能会写了类似这样的SQL。
按标题模糊查询,查询标题与xxxxx有关的新闻
select * from t_nes here title like ‘xxxxx’;按关键字查询 ,如查询与xxxx有关的新闻
select * from t_nes here title like '苍老师' or content like '苍老师'’;当数据量变大时,这四个查询都变慢了,我们可能会建立索引,但是有的like语句会使索引失效。
可能有的需求对搜索的结果进项相关度排名的显示,对应的sql是否可以满足需求吗?
例如:
要查询 中国、冠状病毒、复工有关的新闻:
含有三个关键字(相关度最高)的新闻排前面
含两个关键字(相关度次之),排次之
含一个关键字 的,排次次之。
这时利用数据库sql实现还是比较困难的。
数据库适合结构化数据的精确查询,而不适合半结构化、非结构化数据的模糊查询及灵活搜索(特别是数据量大时),无法提供想要的实时性。这个问题,一个解决思路是:
我们查询时,输入的是冠状病毒,想要得到标题或内容中包含冠状病毒的新闻列表。
如果标题、内容列上都有一个这样的索引,里面能快速找到与冠状病毒关键字对应的文章,再根据文章就可以快速找到文章了。
倒排索引
上面建立索引就是倒排索引,或者又叫做反向索引。例如:
标题列索引: