lucene全文检索技术

lucene的介绍
        1: lucene是apache下的一个开源的免费的全文检索工具包(就是一堆jar包)
        2: lucene的作用: 就是全文检索的作用
        3: Lucene的下载
    

    顺序扫描法:(sql中like使用的就是顺序扫描法)
        特点: 从文件头扫描到文件尾,直到扫描到关键词为止
        
    全文检索技术
        作用
            1: 可以实现类似于百度和谷歌的搜索引擎
            2: 可以实现类似于京东,淘宝站内搜索商品的功能
            3: 可以实现类似于贴吧,论坛等站内搜索的功能
            4: 智能客服
        特点
            1: 对搜索的关键词进行分词
            2: 索引库: 索引目录,所有文档
                a: 在添加文档的时候,先对文档进行分词
                b: 分的每一个词都会在索引目录中创建唯一索引
                c: 每一个词都记录了在哪些文档中出现的次数
            3: 相关度排序: 根据关键词在文档中的覆盖程度,关键词在文档中出现的次数进行计算一个权重值,权重值约大排序越靠前

            4: 一个词在很多文档中都出现了,说明这个词不重要,只关于这个词的文档会排到最后


文档(Document)中的域(Field)

           每个Document可以有多个Field,不同的Document可以有不同的Field,同一个Document可以有相同的Field(域名和域值都相同)

           1: 文档的field对象(pojo里面属性)

    我们创建每一个域都需要考虑三件事情
    
    a: 是否分词(目的: 是为了创建索引)
    
    b: 是否索引(目的: 是为了查询)
    
    c: 是否存储(目的: 是为了前台使用)

    在lucene的代码中,我们能灵活的控制每个域是否进行存储,
    但是我们不能灵活的控制,是否分词以及是否索引.
    因为lucene在底层已经规定好了每一种域的类型,是否分词以及是否索引


    TextField(流以及文本域)
        必须分词
        必须索引
        
    IntField,DoubleField,LongField,FloatField(数字域)
        必须分词(lucene底层对数字域进行了特殊的分词方法)
        必须索引

    StringField(文本域)
        必须不分词
        必须索引

    StoredField(存储域)
        必须不分词
        必须不索引
        必须存储

2: lucene的维护
    lucene在底层没有修改功能,所谓的修改其实是先删除原文档,
        然后再增加新文档


3: 相关度排序
    Term Frequency (tf): 一个词在一个文档中出现的次数,出现的次数
        越多,排序越靠前
    Document Frequency (df): 一个词在多少文档中出现的次数,出的次数越多
        这个词就越不重要,只跟这个词有关的文档,排序会靠后

    

          


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值