zoukankan      html  css  js  c++  java
  • 基于.NET的全文索引引擎Lucene.NET

          最近我在学习Lucene.net的应用,先在这里向大家介绍一下,Lucene.net是一个高性能的全文检索引擎,而且免费、开源,几乎适合于任何需要全文检索的应用,尤其是跨平台的应用,它由Java下的Lucene移植而来,在Java平台已经得到了广泛的应用。与传统数据库检索相比,Lucene.net具有以下特点:

      Lucene全文索引引擎 数据库
    索引 将数据源中的数据都通过全文索引一一建立反向索引 对于LIKE查询来说,数据传统的索引是根本用不上的。数据需要逐个遍历记录进行GREP式的模糊匹配,比有索引的搜索速度要有多个数量级的下降。
    匹配效果 通过词元(term)进行匹配,通过语言分析接口的实现,可以实现对中文等非英语的支持。 使用:like "%net%" 会把netherlands也匹配出来,
    多个关键词的模糊匹配:使用like "%com%net%":就不能匹配词序颠倒的xxx.net..xxx.com
    匹配度 有匹配度算法,将匹配程度(相似度)比较高的结果排在前面。 没有匹配程度的控制:比如有记录中net出现5词和出现1次的,结果是一样的。
    结果输出 通过特别的算法,将最匹配度最高的头100条结果输出,结果集是缓冲式的小批量读取的。 返回所有的结果集,在匹配条目非常多的时候(比如上万条)需要大量的内存存放这些临时结果集。
    可定制性 通过不同的语言分析接口实现,可以方便的定制出符合应用需要的索引规则(包括对中文的支持) 没有接口或接口复杂,无法定制
    结论 高负载的模糊查询应用,需要负责的模糊查询的规则,索引的资料量比较大 使用率低,模糊匹配规则简单或者需要模糊查询的资料量少

    全文检索和数据库查询最大的不同在于:让最相关的头100条结果满足98%以上用户的需求   

    Lucene.net是一套全文检索的开发包而不是实际应用,它已经包含了智能分词、高亮关键字、索引算法等基本构件,只需对其进行简单的二次开发,即可应用在实际项目中。现在大家使用这个Blog的搜索引擎就是基于Lucene.net的。

    相关资源:

    Lucene.Net search engine library: http://sourceforge.net/projects/lucenedotnet/
    dotLucene a search engine library: http://sourceforge.net/projects/dotlucene/
    NLucene – A .NET search engine:   http://sourceforge.net/projects/nlucene/

  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/flyfish/p/298853.html
Copyright © 2011-2022 走看看