lucene 核心概念及入门

Lucene硬核解析专题系列(一):Lucene入门与核心概念 Lucene诞生于1999年,由Doug Cutting开发,后来捐赠给了Apache软件基金会。它不是一个开箱即用的搜索引擎,而是一个底层库,提供了构建搜索功能的工具。它的定位类似于数据库中的存储引擎,专注于高效的文本索引和检索。核心能力全文搜索:支持复杂的查询语法。高性能:得益于倒排索引和优化的存储结构。灵活性:可定制分词、评分和存储策略。应用场景:从简单的本地文件搜索,到支撑分布式搜索引擎的底层。 阅读详情

lucene

Lucene介绍及核心概念

什么是Lucene

Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程序接口,能够做全文索引和搜索,在Java开发环境里Lucene是一个成熟的免费开放源代码工具;就其本身而论,Lucene是现在并且是这几年,最受欢迎的免费Java信息检索程序库。

lucene可以做什么

Lucene允许你向自己的应用程序中添加搜索功能。Lucene能够把你从文本中解析出来的数据进行索引和搜索。Lucene并不关心你的数据来源,格式,甚至不关心数据的语种。

Lucene的优点

  • Lucene作为一个全文检索引擎,其具有如下突出的优点:

(1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。

(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。

(3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。

(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。

(5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。

Lucene相关名词解释

1、IndexWriter

lucene中最重要的的类之一,它主要是用来将文档加入索引,同时控制索引过程中的一些参数使用。

2、Analyzer

分析器,主要用于分析搜索引擎遇到的各种文本。常用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分析器等。

3、Directory

索引存放的位置;lucene提供了两种索引存放的位置,一种是磁盘,一种是内存。一般情况将索引放在磁盘上;相应地lucene提供了FSDirectory和RAMDirectory两个类。

4、Document

文档;Document相当于一个要进行索引的单元,任何可以想要被索引的文件都必须转化为Document对象才能进行索引。

5、Field

类似于数据库中的一个字段,存储了key-value值。

6、IndexSearcher

是lucene中最基本的检索工具,所有的检索都会用到IndexSearcher工具;

7、Query

Query类似关系型数据库中的SQL语句。与关系型数据库类似,Lucene提供了以下的基本查询:精确查询xxx = ? TermQuery、范围查询 xxx BETWEEN? AND ? PointRangeQuery、模糊查询 xxx LIKE ‘%?%’ PrefixQuery、RegexpQuery、组合查询 (…) AND (…) OR (…) BooleanQuery

8、QueryParser

是一个解析用户输入的工具,可以通过扫描用户输入的字符串,生成Query对象。

9、Hits

在搜索完成之后,需要把搜索结果返回并显示给用户,只有这样才算是完成搜索的目的。在Lucene中,搜索的结果的集合是用Hits类的实例来表示的。

什么是正向索引、什么是倒排索引?

正向索引(forward index),反向索引(inverted index)更熟悉的名字是倒排索引。

在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索引库中,关键词也已经转换为关键词ID)。例如“文档1”经过分词,提取了20个关键词,每个关键词都会记录它在文档中的出现次数和出现位置,得到正向索引的结构如下:

doc1 —> word1:出现次数,出现位置列表;单词2:出现次数,出现位置列表…

doc2 —> word1:出现次数,出现位置列表;单词2:出现次数,出现位置列表…

当用户在主页上搜索关键词“苹果手机”时,假设只存在正向索引(forward index),那么就需要扫描索引库中的所有文档,找出所有包含关键词“苹果手机”的文档,再根据打分模型进行打分,排出名次后呈现给用户。因为互联网上收录在搜索引擎中的文档的数目是个天文数字,这样的索引结构根本无法满足实时返回排名结果的要求。

所以,搜索引擎会将正向索引重新构建为倒排索引,即把文件ID对应到关键词的映射转换为关键词到文件ID的映射,每个关键词都对应着一系列的文件,这些文件中都出现这个关键词,得到倒排索引的结构如下:

word1 —> doc3、doc2、doc7、doc6…

word2 —> doc1、doc2、doc5、doc6…

lucene java客户端

/**
 * <p>
 *
 * @author leone
 * @since: 2018-11-23
 **/
public class Book {

    private int bookId;

    private String name;

    private float price;

    private String picture;

    private String description;

    public Book() {
    }

    public Book(int bookId, String name, float price, String picture, String description) {
        this.bookId = bookId;
        this.name = name;
        this.price = price;
        this.picture = picture;
        this.description = description;
    }

    public int getBookId() {
        return bookId;
    }

    public void setBookId(int bookId) {
        this.bookId = bookId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    public String getPicture() {
        return picture;
    }

    public void setPicture(String picture) {
        this.picture = picture;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

package com.andy.lucene;

import org.apache.commons.io.FileUtils;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *
 * @author leone
 * @since: 2018-11-23
 **/
public class BookMain {

    private static final Logger logger = LoggerFactory.getLogger(BookMain.class);

    private static List<Book> books = new ArrayList<>();

    private static String docPath = "E:\\tmp\\lucene\\docDir";
    private static String indexPath = "E:\\tmp\\lucene\\indexDir";

    static {
        books.add(new Book(1, "Java核心编程思想", 23, "http://www.taobao.com/image.jpg", "Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程"));
        books.add(new Book(2, "mysql数据库设计", 47, "http://www.taobao.com/image.jpg", "MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。"));
        books.add(new Book(3, "JavaWeb进阶", 75, "http://www.jd.com/image.jpg", "Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。"));
        books.add(new Book(4, "spring入门", 38, "http://www.tianmao.com/image.jpg", "Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架"));
        books.add(new Book(5, "springCloud微服务实战", 42, "http://www.yamaxun.com/image.jpg", "Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。"));
        books.add(new Book(5, "JavaScript高级", 71, "http://www.tianmao.com/image.jpg", "JavaScript 是属于网络的脚本语言 JavaScript 被数百万计的网页用来改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。"));
    }

    public static void main(String[] args) throws Exception {

        Map<String, String> doc = new HashMap<>();
        doc.put("文件名称", "fileName");
        doc.put("文件大小", "fileSize");
        doc.put("文件路径", "filePath");
        doc.put("文件内容", "fileContent");

        Map<String, String> book = new HashMap<>();
        book.put("商品ID", "book_id");
        book.put("商品名称", "name");
        book.put("商品价格", "price");
        book.put("商品图片地址", "picture");
        book.put("商品描述", "description");

        long start = System.currentTimeMillis();
//        createIndex();
//        indexSearch("description:spring");
        logger.info("一共花费了:{}毫秒!", (System.currentTimeMillis() - start));
    }

    private static void createIndex() throws IOException {
        // 将采集到的数据封装到Document对象中
        List<Document> docList = new ArrayList<>();
        Document document;
        for (Book book : books) {
            document = new Document();
            // store:如果是yes,则说明存储到文档域中

            // 图书ID
            Field bookId = new TextField("book_id", Integer.toString(book.getBookId()), Field.Store.YES);
            // 图书名称
            Field name = new TextField("name", book.getName(), Field.Store.YES);
            // 图书价格
            Field price = new TextField("price", Float.toString(book.getPrice()), Field.Store.YES);
            // 图书图片地址
            Field picture = new TextField("picture", book.getPicture(), Field.Store.YES);
            // 图书描述
            Field description = new TextField("description", book.getDescription(), Field.Store.YES);
            // 将field域设置到Document对象中
            document.add(bookId);
            document.add(name);
            document.add(price);
            document.add(picture);
            document.add(description);
            docList.add(document);
        }
        // 创建分词器,标准分词器
        Analyzer analyzer = new StandardAnalyzer();
        // 创建IndexWriter
        IndexWriterConfig cfg = new IndexWriterConfig(analyzer);
        // 指定索引库的地址
        Directory directory = FSDirectory.open(FileSystems.getDefault().getPath(indexPath));
        // 创建索引writer
        IndexWriter writer = new IndexWriter(directory, cfg);
        // 清除以前的index
        writer.deleteAll();
        // 通过IndexWriter对象将Document写入到索引库中
        for (Document doc : docList) {
            writer.addDocument(doc);
        }
        // 关闭writer
        writer.close();
    }


    /**
     * @param query
     * @throws IOException
     */
    private static void searchDocument(Query query, Map<String, String> map) throws IOException {
        // 1.创建DirectoryJDK 1.7以后 open只能接收Path
        Directory directory = FSDirectory.open(FileSystems.getDefault().getPath(indexPath));
        IndexReader reader = DirectoryReader.open(directory);
        IndexSearcher searcher = new IndexSearcher(reader);
        // 通过searcher来搜索索引库,第二个参数指定需要显示的顶部记录的N条
        TopDocs topDocs = searcher.search(query, 10);

        // 根据查询条件匹配出的记录总数
        int count = topDocs.totalHits;

        System.out.println("匹配出的记录总数:[ " + count + " ]\n==========================");
        // 根据查询条件匹配出的记录
        ScoreDoc[] scoreDocs = topDocs.scoreDocs;
        for (ScoreDoc scoreDoc : scoreDocs) {
            // 获取文档的ID
            int docId = scoreDoc.doc;
            // 通过ID获取文档
            Document doc = searcher.doc(docId);
            for (Map.Entry<String, String> entry : map.entrySet()) {
                System.out.println(entry.getKey() + ":" + doc.get(entry.getValue()));
            }
            System.out.println("==========================");
        }
        // 关闭资源
        reader.close();

    }

    public static void indexSearch(String name, Map<String, String> map) throws Exception {
        // 创建query对象
        Analyzer analyzer = new StandardAnalyzer();
        // 使用QueryParser搜索时,需要指定分词器,搜索时的分词器要和索引时的分词器一致,第一个参数:默认搜索的域的名称
        QueryParser parser = new QueryParser("description", analyzer);
        // 参数:输入的lucene的查询语句(关键字一定要大写)
        Query query = parser.parse(name);
        searchDocument(query, map);
    }


}

Elasticsearch入门(一):搜索、数据库做搜索、全文检索和Lucene、Elasticsearch(简介、适用场景、功能、特点、核心概念) 目录一、什么是搜索?1.1 垂直搜索(站内搜索)1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和Lucene?二、Elasticsearch简介2.1 图解分析2.2 Elasticsearch的功能2.2.1 分布式的搜索引擎和数据分析引擎2.2.2 全文检索,结构化检索,数据分析2.2.3 对海量数据进行近实时的处理2.3 Elasticsearch的适用场景2.3.1 国外2.3.2 国内2.4 Elasticsearch的特点三、Elasticsearch的核心概念3.1 Near Re 阅读详情

相关推荐

解密Lucene的几个核心设计思想

解密Lucene的几个核心设计思想 1.背景介绍 在当今信息时代,数据的爆炸式增长使得高效的数据检索和管理成为一个迫切的需求。作为一个成熟且广泛使用的开源全文搜索引擎库,Lucene凭借其卓越的性能、可扩展性和灵活性,成为了构建搜索应用的首选方案。本文将探讨Lucene的几个核心设计思想,

AI天才研究院 1307

Lucene的必会的核心知识点

前言 Lucene 是一种高性能、可伸缩的信息搜索(IR)库,在 2000 年开源,最初由鼎鼎大名的 Doug Cutting 开发,是基于 Java 实现的高性能的开源项目。 Lucene 采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读写时几乎完全避免了锁的出现,大大提升了读写性能。 基本概念 在深入解读Lu...

SmallCatBaby的博客 586

基于Lucene的中文自然语言搜索引擎

针对Lucene 中的中文分析器不符合汉语的习惯,实现基于标准中文词库中文分析器。提高了检索查全率、查准率以及检索性能

【elasticsearch】Lucene查询语言

【代码】【elasticsearch】Lucene查询语言。

weixin_43346403的博客 346

持续集成介绍及Jenkins自动化测试部署

学习持续集成及jenkins的自动化测试部署

ouihsiad的博客 4576

避坑指南:麒麟系统ARM架构下PostGIS离线安装常见问题解析

本文深度解析了在国产麒麟系统ARM64架构下进行PostGIS离线安装的完整路径与核心避坑点。通过对比Docker容器化与源码编译两种部署方式的优劣,详细阐述了离线Docker环境搭建、ARM64镜像获取验证、容器化配置及常见故障排查的全流程,为在特殊环境下稳定部署空间数据库提供了一套可靠的实践指南。

Python的专栏 287

Lucene(三)核心概念

1.Lucene概述 Lucene是一款高性能的、可扩展的信息检索(IR)工具库。信息检索是指文档搜索、文档内信息搜索或者文档相关的元数据搜索等操作。 2.索引过程: ①获取内容 ②建立文档 获取原始内容后,就需要对这些内容进行索引,必须首先将这些内容转换成部件(通常称为文档),以供搜索引擎使用。文档主要包括几个带值的域,比如标题、正文、摘要、作者和链接。 ③文档分析 搜索引擎不能直接对文本进行索引:确切地说,必须将文本分割成一系列被称为语汇单元的独立的原子元素。每一个语汇单元大致与语言中的“单词

java_shm的专栏 500

NMOS管和PMOS管做开关控制电路

NMOS管和PMOS管做开关控制电路

while(1) 3万+

7天精通Lucene.NET:从零基础到企业级全文搜索

当用户在你的应用中输入关键词却得不到精准结果时,当百万级数据查询响应慢如蜗牛时,当需要支持中文、日文等多语言分词时——是时候拥抱Apache Lucene.NET了!作为Apache Lucene的.NET移植版,这个强大的全文搜索引擎库已帮助Evernote、GitHub等产品实现毫秒级检索。本文将通过**7个实战章节**,带你从环境搭建到构建企业级搜索系统,掌握分词优化、相关性排序、分布式索引...

gitblog_00500的博客 371

别让PEX和后仿真拖后腿:Calibre与Virtuoso ADE联调的那些‘坑’与最佳实践

本文深入探讨了Calibre与Virtuoso ADE在PEX寄生参数提取和后仿真联调中的常见问题与解决方案。针对DRC/LVS验证通过后出现的网表导入错误和仿真波形异常,提供了七大典型场景的实战经验,包括PEX提取模式选择、CalibreView生成细节、环境变量配置等关键环节的最佳实践,助力工程师高效完成芯片设计验证。

weixin_33695450的博客 392

Anchor graph 对齐文献解读

Align then Fusion: Generalized Large-scale Multi-view Clustering with Anchor Matching Correspondences文献解读

atease0001的博客 1164

Lucene推荐资源总结

1)Apache的首页    http://lucene.apache.org/java/docs/index.html    里面包含的file format应该是开始了解lucene的必读内容,Query Syntax描述输入关键词得语法。当然,结合程序代码一起看会效果更好。2)lucene 倒排索引的原理    http://www.zhanglihai.com/blog/c_296.htm...

wuqinlss的博客 179

数据库行转列的sql语句

 问题描述假设有张学生成绩表(CJ)如下Name Subject Result张三 语文 80张三 数学 90张三 物理 85李四 语文 85李四 数学 92李四 物理 82现在 想写  sql 语句     查询后结果 为    姓名 语文 数学 物理张三 80 90 85李四 85 92 82       该怎么实现 ?研究意义        这是个并不复杂的问题,但却是数

jb303的专栏 2248

ElasticSearch 基础概念

博文目录 文章目录ElasticSearchElasticSearch 与 Lucene 的关系ElasticSearch 与 SolrSolr比较ElasticSearch 与 关系型数据库 概念类比Lucene 全文检索框架全文检索分词原理之倒排索引ElasticSearch 核心概念索引 index映射 mapping字段 Field字段类型 Type文档 document集群 cluster节点 node分片和副本 shards & replicas分片副本ElasticSearch 环境搭

mrathena 443

Windows如何使用Anaconda 3进行keras环境的配置

** Windows如何使用Anaconda 3进行keras环境的配置 搭建Keras环境* Anaconda3如何安装keras,主要包括下面三步: 1.安装mingw libpython 2.安装theano 3.安装keras 若你还没有按装anaconda,赶紧下载安装吧! 下载途径有两个 (1)Anaconda版本为Anaconda 4.4.0,对应的python版本为3.6,附上An...

Lance_liangliang的博客 1601

强化学习在视觉导航中的应用

强化学习在视觉导航中的应用​ ,人工智能,计算机视觉,大模型,AI,强化学习(Reinforcement Learning, RL)是一种通过智能体(Agent)与环境进行交互,以最大化累积奖励为目标的机器学习范式。它不依赖于预定义的规则或大量标注数据,而是让智能体在试错过程中学习最优策略。计算机视觉(Computer Vision)则赋予智能体 “观察” 环境的能力,使其能够从图像或视频中提取有用信息。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 22万+

【转】Lucene学习笔记

<br />http://www.javaeye.com/topic/25115<br />一、环境 <br />需要导入lucene.jar包(在lucene.apache.org下载) <br />二、基本概念 <br />1.Lucene的工作流程: <br />(1) 使用IndexWriter,在指定的目录建立索引的文件 <br />  (2) 将需要检索的数据转换位Document的Filed对象,然后将Document用IndexWriter添加倒索引的文件中 <br />   (3) 处理索

jundengcnsky的专栏 403

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Lucene(七)总结

1.什么是全文检索 2.全文检索的应用场景 3.什么是lucene 4.lucene实现全文检索的流程 5.入门程序 6.分析器 7.索引库维护 8.索引库查询 五.入门程序

java_shm的专栏 194

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Lucene 使用(一)简介

Reference Lucene入门教程 Lucene 5.1.0 core API Lucene简介什么是Lucene全文搜索框架,建立Index,搜索DocumentLucene可以做什么lucene提供的服务实际包含两部分:一入一出。所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除;所谓出是读出,即向用户提供全文搜索服务,让用户可以通过关键词定位源。写入流程 源字符串首

tjf的专栏 664

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

快速上手搜索引擎的秘密武器——Lucene

内容的话就很基础啦,希望能帮你快速入门,了解下它 目录 image-20210930071825137 为啥要介绍这个Lucene呢?毕竟它是搜索引擎核心中的核心 其实是因为我想体验下这个工具包,试着感受下ElasticSearch为啥要封装它?以及他们之间的联系~ 等 Lucene Lucene 是一个开源的,全文索引工具包。有索引,搜索,分词等功能 是ElasticSearch和Apache Solr的核心。 在 MySQL 中,Innodb 和 MyISAM...

m0_63550462的博客 295

Lucene从入门到使用

第一节:lucene入门阶段 1.什么是Lucene?         Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。——《百度百科》 2.全文...

Null的博客 1万+

elasticsearch和lucene的关系以及elasticsearch的核心概念

1、lucene和elasticsearch的前世今生 2、elasticsearch的核心概念 3、elasticsearch核心概念 vs. 数据库核心概念 ----------------------------------------------------------------------------------------------------------------

千里之行始于足下 1万+

Elasticsearch - Elasticsearch 中的 Lucene 核心依赖的作用

本文深入探讨了Elasticsearch底层依赖的Apache Lucene引擎的核心作用。Lucene为Elasticsearch提供了倒排索引、分词器、查询解析等核心功能,是ES实现高效搜索的基础。文章通过架构图展示了ES对Lucene的封装关系,详细解析了倒排索引的工作原理和Segment索引结构,并介绍了分词器的组成原理。理解Lucene对优化Elasticsearch性能和定制搜索功能具有重要意义,是掌握ES技术本质的关键。(148字)

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

ElasticSearch系列——Lucene和ElasticSearch介绍及其核心概念

1、Lucene和ElasticSearch Lucene:功能强大到令人头大,非常复杂,学习成本高。API复杂,实现简单的功能需要写大量的java代码,甚至需要深入理解其原理 ElasticSearch:基于Lucene开发,隐藏其复杂性,从而提供简单易用的Restful API接口(还有其他的语言,如c++、python等)。开箱即用,完全开源 2、ElasticSearch的核心概念 Near Realtime(NRT):近实时。意思就是“快”。两层含义:从写入到被检索大概只需要 1 秒;

weixin_42894555的博客 599

【搜索引擎】一文搞懂elastic search核心概念:倒排索引、lucene

一文搞懂ES核心概念:倒排索引、lucene。

BugMan的博客 1465
上一篇: kafka 核心概念及快速入门
下一篇: Flume 核心概念及快速入门
exklin
博客等级 码龄9年 35粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值