倒排索引,正排索引与lucene

倒排索引,正排索引与lucene

数据搜索技术
  1. 传统数据库搜索技术

    select * from TABLE_NAME where xx like "%PHP是世界上最好的语言%"

    该查询对于数据库来说,需要根据查询字段逐条进行检索。然后返回该条结果数据,对于大量的数据来说搜索效率很低,而且只能进行完整词汇的匹配。无法模糊的相关搜索。

  2. 倒排索引数据搜索技术

    网页搜索 PHP是世界上最好的语言

    image

    当前搜索中出现了传统数据库搜索不能出现的**php语言是不是..**等词。

    如果有五条数据,那么它们都是怎么检索的呢?

    DocId内容
    1PHP是世界上最好的语言是什么梗?
    2PHP是世界上最好的语言这个梗是怎么来的?
    3编程的程序员们,你们有语言崇拜吗...
    4php语言是不是世界上最好的语言
    5程序员鄙视链PHP是世界上最好的语言

    如果是传统数据库检索,只会出现 1 , 2 , 4, 5 分词

    DocId内容
    1PHP,是,世界上,最好,的,语言,是,什么,梗?
    2PHP,是,世界,上,最好,的,语言,这个,梗,是,怎么,来,的?
    3编程,的,程序员们,你们,有,语言,崇拜,吗...
    4php,语言,是不是,世界,上,最好,的,语言
    5程序员,鄙视链,PHP,是,世界,上,最好,的,语言

    按照以上分词的结果,进行查询.依然是正排索引.倒排索引是什么样子的呢?

    DocId
    PHP1,2,3,4,5
    世界1,2,3,4,5
    语言1,2,3,4,5
    程序员5
    编程3
    ......

    那么基于倒排索引查询的时候就很清晰了,对于分伺后的结果再查询文档

  3. 搜索引擎是如何实现的呢

    • 基于以上了解的,实现搜索引擎的整体过程是什么流程? 
    • image
Lucene是什么?

Lucene是纯java开发的一个开源的全文检索引擎工具包。它本身不是一个完全的全文检索引擎,而只是一个完全的全文检索引擎架构。它提供了完全的查询引擎与索引引擎。目前由Apache基金会进行运营。再其之上建立的成熟的全文检索引擎有solr与ElasticSearch

  1. Lucene历史

    Lucene最早有Hadoop之父Doug Cutting创建,Doug Cutting是资深全文检索专家,早期发布Lucene代码到个人博客上,最终贡献给Apache基金会。

  2. Lucene基本概念
    • Index(索引):索引
    • Segement(段):创建索引时会生成Segment,之后再定时合并到大的Segment中
    • Document(文档):由很多的Field组成,
    • Field(字段):有很多的Term组成
    • Term(词项):分词后的最小单元为Term
    • Token(词条):类似于每个Term的属性,记录类型,偏移量等.
    •  image

转载于:https://my.oschina.net/CainGao/blog/3077394

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值