在前面的流处理随谈一文中已经简单介绍了Watermark,本文主要再结合Flink具体分析一下,作为补充。理论如果看完之前的文章,已经完全理解了Watermark,那可以直接跳过这部分,看实战部分。如果还不太理解,我通过几个问题来阐述一下,帮助你理解。要注意的是下面的描述方式和实际实现未必完全一样(有些甚至是我的个人观点),但可以帮助你更好的理解。What?Watermark是什么?从不同的...
说到流处理,很多后端工程师,特别是大数据工程师应该都不陌生,Storm、Spark以及如日中天的Flink应该或多或少的听过或者用过。本文从下面几个方面简单聊聊流处理:流处理发展史流处理中的一些重要思想和设计一些流处理框架的简单对比(Storm、Spark、Flink、Google Cloud Dataflow、Kafka Stream)注:本文说的Spark都指其流式部分,即Spark (...
注:本文基于Lucene 8.2.0 版本。本文是Lucene系列的终篇,在这篇文章中,我们会简单聊一下Lucene的相似度评分机制。TF-IDFBag-of-words模型先介绍一下NLP和IR领域里面非常简单且使用极其广泛的bag-fo-words model,即词袋模型。假设有这么一句话:"John likes to watch movies. Mary likes movies to...
本文内容来自于Jay Kreps于2014年在LinkedIn发布的一篇文章,英文原文见Benchmarking Apache Kafka: 2 Million Writes Per Second (On Three Cheap Machines)。Jay Kreps是Kafka的早期作者之一,也是提供商业版本Kafka的Confluent公司联合创始人兼CEO。尽管该文发布于2014年4月...
注:本文基于Lucene 8.2.0 版本。本文介绍一个比较“特殊”的查询API——QueryParser,它的特殊之处在于定义了一些查询语法,通过这些语法几乎可以实现前文介绍的所有Query API提供的功能,但它的存在并不是为了替换那些API,而是用在一些交互式场景中。本文不会再细述Lucene各个查询的含义及用法(比如什么是edit distance),所以如果你还不熟悉,请务必先阅读...
本文介绍Lucene/ElasticSearch/Solr中的DisjunctionMaxQuery,这里我先给出Lucene 8.2.0版本JavaDoc对于该查询接口的描述:A query that generates the union of documents produced by its subqueries, and that scores each document with...
注:本文基于Lucene 8.2.0 版本。搜索是使用Lucene的根本目的,本文介绍Lucene提供的常用查询。下面的讲述中,会以之前《Lucene系列(2)——代码实践》文章中4首短诗的索引数据为例进行查询,你可以先阅读那篇文章构建索引。在Lucene中,Term是查询的基本单元(unit),所有查询类的父类是org.apache.lucene.search.Query,本文会介绍下图中...
注:本文基于Lucene 8.2.0 版本。本文讨论Lucene底层索引数据存储。对于绝大数多人来说了解Lucene的上层概念足矣,无需关注底层的存储格式。所以本文虽然是讨论底层数据存储的,但也不会深入到具体的数据结构、压缩算法等。如果你有兴趣,可以查看对应版本的Lucene Java doc(8.2.0版本的链接已经附在文末)。另外,如果你对index、document、term、segm...
- « 前一页
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 后一页 »