Lucene简介

最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。 是Apache的子项目,网址:http://lucene.apache.org/

Lucene用途

为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。

Lucene适用场景

在应用中为数据库中的数据提供全文检索实现。 开发独立的搜索引擎服务、系统

Lucene的特性

稳定、索引性能高

  1. 每小时能够索引150GB以上的数据。
  2. 对内存的要求小——只需要1MB的堆内存
  3. 增量索引和批量索引一样快。
  4. 索引的大小约为索引文本大小的20%~30%。

高效、准确、高性能的搜索算法

  1. 良好的搜索排序。
  2. 强大的查询方式支持:短语查询、通配符查询、临近查询、范围查询等。
  3. 支持字段搜索(如标题、作者、内容)。
  4. 可根据任意字段排序 支持多个索引查询结果合并
  5. 支持更新操作和查询操作同时进行
  6. 支持高亮、join、分组结果功能 速度快
  7. 可扩展排序模块,内置包含向量空间模型、BM25模型可选
  8. 可配置存储引擎

跨平台

  1. 纯java编写。
  2. 作为Apache开源许可下的开源项目,你可在商业或开源项目中使用。
  3. Lucene有多种语言实现版可选(如C、C++、Python等),不光是JAVA。

Lucene集成

将lucene core的jar引入到你的应用中

  • 方式一:官网下载 zip,解压后拷贝jar到你的工程
  • 方式二:maven 引入依赖
    <!-- lucene 核心模块  -->
    <dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-core</artifactId>
    <version>7.3.</version>
    </dependency>

Lucene 模块说明

core: Lucene core library 核心模块:分词、索引、查询

analyzers-*: 分词器

facet: Faceted indexing and search capabilities 提供分类索引、搜索能力

grouping: Collectors for grouping search results. 搜索结果分组支持

highlighter: Highlights search keywords in results 关键字高亮支持

join: Index-time and Query-time joins for normalized content 连接支持

queries: Filters and Queries that add to core Lucene 补充的查询、过滤方式实现

queryparser: Query parsers and parsing framework 查询表达式解析模块

spatial: Geospatial search 地理位置搜索支持

suggest: Auto-suggest and Spellchecking support 拼写检查、联想提示

了解核心模块的构成

学习笔记(二)--Lucene简介的更多相关文章

  1. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component

    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...

  2. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  3. ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  4. MongoDB学习笔记二- Mongoose

    MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...

  5. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  6. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  7. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  8. C#.NET学习笔记1---C#.NET简介

    C#.NET学习笔记1---C#.NET简介 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com -------------- ...

  9. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  10. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

随机推荐

  1. Query the tables and index which will caus rebuild index fail

    On MSSQL server database, while rebuild index failed, we can use the follow sql statement to see if ...

  2. MSSQL DB Replication Error

    Command attempted: if @@trancount > 0 rollback tran (Transaction sequence number: 0x000283BE00007 ...

  3. 三层实现办公用品表CRUD(全过程)-ASP

    好久都没有写写技术博客了,自己最近几个月都要忙着搬家还有添置家当,所以一些博客就很少去写了,天道酬勤,有些吃饭的家伙还是不能有所懈怠,所以送上一个花了几小时给人事同事写的简单办公用品表的CRUD,希望 ...

  4. Struts2 环境配置

    1.下载struts2开发包 2.将apps中的 Struts-blank.war 解压,里面的 lib 中就是所需jar包 3.新建一个web project项目,将jar包导入复制粘贴到lib中 ...

  5. cumsum函数

    >>> a = np.array([[1,2,3], [4,5,6]]) >>> a array([[1, 2, 3], [4, 5, 6]]) >>& ...

  6. guxh的python笔记七:抽象基类

    1,鸭子类型和白鹅类型 1.1,白鹅类型 白鹅类型对接口有明确定义,比如不可变序列(Sequence),需要实现__contains__,__iter__,__len__,__getitem__,__ ...

  7. recon工具解读

    recon 是ferd 大神 释出的一个 用于生产环境诊断Erlang 问题的一个工具, 不仅仅是对Erlang stdlib 接口的封装, 还有memory fragmentation 相关的函数. ...

  8. JavaScript选择点击

    //class选择器[分类添加商品] var a=document.getElementsByClassName("item-collection-detail__products-item ...

  9. 1021. Remove Outermost Parentheses删除最外层的括号

    网址:https://leetcode.com/problems/remove-outermost-parentheses/ 使用栈的思想,选择合适的判断时机 class Solution { pub ...

  10. js parseInt()与Number()区别

    说到转换成数字类型,我首先想到的是parseInt()方法,后来接触多了才发现还有一个Number()方法,同样是转换成数字类型,这两种方法有什么不同的呢? 1.parseInt():      pa ...