一、Lucene介绍

1. Lucene简介

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

2. Lucene用途

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

3. Lucene适用场景

  在应用中为数据库中的数据提供全文检索实现。

  开发独立的搜索引擎服务、系统

4. Lucene的特性

  1、稳定、索引性能高

    每小时能够索引150GB以上的数据。

    对内存的要求小——只需要1MB的堆内存

    增量索引和批量索引一样快。

     索引的大小约为索引文本大小的20%~30%。

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

    良好的搜索排序。

    强大的查询方式支持:短语查询、通配符查询、临近查询、范围查询等。

    支持字段搜索(如标题、作者、内容)。

    可根据任意字段排序

    支持多个索引查询结果合并

    支持更新操作和查询操作同时进行

    支持高亮、join、分组结果功能

    速度快

    可扩展排序模块,内置包含向量空间模型、BM25模型可选

    可配置存储引擎

  3、跨平台

    纯java编写。

    作为Apache开源许可下的开源项目,你可在商业或开源项目中使用。

     Lucene有多种语言实现版可选(如C、C++、Python等),不光是JAVA。

二、Lucene架构

1. 数据收集

2. 创建索引

3. 索引存储

4. 搜索(使用索引)

三、Lucene集成

1. 选用的Lucene版本

选用当前最新版 7.3.0 : https://lucene.apache.org/

2. 系统要求

JDK1.8 及以上版本

3. 集成:将lucene core的jar引入到你的应用中

方式一:官网下载 zip,解压后拷贝jar到你的工程

方式二:maven 引入依赖

4. 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 拼写检查、联想提示

5. 先引入lucene的核心模块

<!-- lucene 核心模块  -->
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.3.0</version>
</dependency>

6. 了解核心模块的构成

Lucene系列二:Lucene(Lucene介绍、Lucene架构、Lucene集成)的更多相关文章

  1. paper 5:支持向量机系列二: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念。

    paper 4中介绍了支持向量机,结果说到 Maximum Margin Classifier ,到最后都没有说“支持向量”到底是什么东西.不妨回忆一下上次最后一张图: 可以看到两个支撑着中间的 ga ...

  2. nova系列二:kvm介绍

    一 什么是kvm KVM 全称 Kernel-Based Virtual Machine.也就是说 KVM 是基于 Linux 内核实现的,这就使得linux内核本身就相当于一个Hypervisor. ...

  3. Redis系列二:reids介绍

    一.什么是redis.redis有哪些特性.redis有哪些应用场景.redis的版本 1. 什么是redis redis是一种基于键值对(key-value)数据库,其中value可以为string ...

  4. Redis系列二 Redis数据库介绍

    1.SELECT命令 通过查看配置文件可以知道Redis默认有17个库,从0-16. 默认是在0号库.选择库使用SELECT <dbid>命令.例如选择0号库  SELECT 0 2.DB ...

  5. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)

    一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...

  6. Lucene系列-索引文件

    本文介绍下lucene生成的索引有哪些文件组成,每个文件包含了什么信息.基于Lucene 4.10.0. 数据结构 索引(index)包含了存储的文档(document)正排.倒排信息,用于文本搜索. ...

  7. 【Lucene3.6.2入门系列】第03节_简述Lucene中常见的搜索功能

    package com.jadyer.lucene; import java.io.File; import java.io.IOException; import java.text.SimpleD ...

  8. Lucene系列四:Lucene提供的分词器、IKAnalyze中文分词器集成、扩展 IKAnalyzer的停用词和新词

    一.Lucene提供的分词器StandardAnalyzer和SmartChineseAnalyzer 1.新建一个测试Lucene提供的分词器的maven项目LuceneAnalyzer 2. 在p ...

  9. [lucene系列笔记3]用socket把lucene做成一个web服务

    上一篇介绍了用lucene建立索引和搜索,但是那些都只是在本机上运行的,如果希望在服务器上做成web服务该怎么办呢? 一个有效的方法就是用socket通信,这样可以实现后端与前端的独立,也就是不管前端 ...

随机推荐

  1. Advanced DataStream API Low-latency Event Time Join

    http://training.data-artisans.com/exercises/eventTimeJoin.html

  2. OpenVSwitch 硬件加速浅谈

    https://zhuanlan.zhihu.com/p/57870521 本文首发SDNLAB. 现代的虚拟化技术使得开发和部署高级网络服务变得更加简单方便.基于虚拟化的网络服务,具有多样性,低成本 ...

  3. javascript原生bind方法详解

    bind()方法,是javascript原生的函数类的一个原型方法(即Function.prototype里的方法),不支持ie低版本. 基本格式: function.bind(obj1,obj2,o ...

  4. linux命令(52):usermod 修改账户信息,groupmod

    usermod: usermod [options] user_name usermod 命令修改系统帐户文件来反映通过命令行指定的变化 选项(options) -a|--append  ##把用户追 ...

  5. [整理]Unity3D游戏开发之Lua

    原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...

  6. 百度地图API-搜索地址、定位、点击获取经纬度并标注

    百度地图api:http://developer.baidu.com/map/jsdemo.htm api申请ak:http://lbsyun.baidu.com/ 一.搜索地址.定位.点击获取经纬度 ...

  7. spark编译报错信息简介

    spark编译需要环境 git java1.+ maven R 报错信息1: [INFO] ------------------------------------------------------ ...

  8. django 返回json数据

    from django.core import serializers @login_required def ajax_get_data(request): json_data = serializ ...

  9. [转]Teleport Ultra/Teleport Pro的冗余代码批量清理方法

    原文地址:http://www.abcd9.com/?post=402 Teleport Pro 是款优秀的网站离线浏览工具(即网站整站下载工具),Teleport Ultra是其增强版,但使用此系列 ...

  10. jquery文字纵向滚动效果(带间隔停留)

    <script type="text/javascript"> //文字纵向滚动 $(function() { var $this = $("#quotati ...