本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- zysnba
- xiangjie88
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- tanling8334
- arpenker
- gaojingsong
- kaizi1992
- xpenxpen
- jh108020
- 龙儿筝
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- mengjichen
- lemonhandsome
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- siemens800
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
最新文章列表
FST源代码解读6——FST的读取
lucene fst 源代码 解读
在lucene的官方文档里,有读取的代码的介绍,直接用了一个Util类,代码如下,方法名字是:org.apache.lucene.util.fst.Util.get(FST<T>, IntsRef)
/** Looks up the output for this input, or null if the input is not ac ...
FST源代码解读5——FST的压缩
lucene fst 源代码 解读
FST中最麻烦的其实是压缩,压缩的代码很难懂,必要性也不是很大(比如再词典表的存储的时候就没有使用压缩),所以我就仅把代码注释写上了,我估计有可能读的人不会很多,所以就不过多解释了.压缩的本质是对那些含有指向自己的arc的数量很多node编号做精简,有两种方式,或者是使用一个单独的对象记录这种节点的编号到位置的映射,在记录一个arc的指向的targe ...
FST源代码解读4——结束添加
lucene fst 源代码 解读
前面讲到调用FST.finish方法了,进入到这个阶段的前提是所有的term都已经被编译进fst了,也就是写入到bytes中了。看下代码如下:
/** 当编译root节点之后调用,传入的是root节点的编号(或者是在bytes中的开始位置) */
void finish(long newStartNode) throws IOException { ...
FST源代码解读3——编译节点
上一篇看完了FST.Builder的代码了,这里写FST代码了。先看编译节点时是如何操作的,即org.apache.lucene.util.fst.FST.addNode(Builder<T>, UnCompiledNode<T>)方法:
long addNode(Builder<T> builder, Builder.UnCompiledNode<T ...
FST源代码解读2——FST的生成
本篇博客介绍FST的生成。它使用的是生成器模式,因为FST的生成太复杂了,所以必须使用生成器模式,他的类是:org.apache.lucene.util.fst.Builder.Builder(INPUT_TYPE, int, int, boolean, boolean, int, Outputs<T>, boolean, float, boolean, int),代码如下:
/* ...
Lucene中文分词和高亮显示
1. 中文分词
2. 高亮显示
New maven project ->
Create a simple project ->
Group Id: com.andrew.lucene
Artifact Id: Lucene05
Version: 0.0.1-SNAPSHOT
Packaging: jar
pom.xml
& ...
Lucene其他查询方式
1. 指定项范围查询TermRangeQuery
2. 指定数字范围查询NumericRangeQuery
3. 指定字符串开头搜索PrefixQuery
4. 组合查询BooleanQuery
New maven project ->
Create a simple project ->
Group Id: com.andrew.lucene
Arti ...
Lucene搜索功能
1. 对特定项搜索
2. 查询表达式:QueryParser
3. 分页实现
New maven project ->
Create a simple project ->
Group Id: com.andrew.lucene
Artifact Id: Lucene03
Version: 0.0.1-SNAPSHOT
Packagin ...
Lucene构建索引
1. 添加、删除、修改文档
New maven project ->
Create a simple project ->
Group Id: com.andrew.lucene
Artifact Id: Lucene02
Version: 0.0.1-SNAPSHOT
Packaging: jar
pom.xml
< ...
Lucene简介与实现
1. Lucene简介
Lucece官网:http://lucene.apache.org/
2. Lucene实现
New maven project ->
Create a simple project ->
Group Id: com.andrew.lucene
Artifact Id: Lucene01
Ver ...
lucene中的PackedInts源码解读(3)-PACKED格式
继续回到最开始的获得mutable的代码那里去
public static Mutable getMutable(int valueCount, int bitsPerValue, PackedInts.Format format) {
assert valueCount >= 0;
switch (format) {
case PACKED_SIN ...
lucene中的PackedInts源码解读(2)-Packed64SingleBlock
紧接上一篇文章,介绍一下Packed64SingleBlock.create方法。
public static Packed64SingleBlock create(int valueCount, int bitsPerValue) {
switch (bitsPerValue) {//这个方法里面会根据bitPerValue来查看使用哪一个类,我们看看前几个吧。
...
lucene中的PackedInts源码解读-1
之前在看lucene4.x的源码的时候,老是遇见packedInts这个类,当时没有看懂,所以这个周一没事做又看了一下,茅塞顿开,看懂了,记个笔记,装一下B。如果读者认为我的博客中含有错误,请联系我,我的qq是1308567317,以免误人子弟。
顺便说一下,我这里看的是lucene6.6.0的代码。
之前阿帅写个关于博客是写PackedInts,不过他仅仅写了PackedInts的思路和好 ...
Elasticsearch如何检索数据
我们都知道Elasticsearch是一个全文检索引擎,那么它是如何实现快速的检索呢?
传统的数据库给每个字段都存储成一个单个值,对于全文检索而言,这样的存储是低效的。举个例子,我有一个大文本字段,存到数据库里面只能是一个值,如果想要检索这个大文本字段里面的任何一个词,数据库如何实现? 只能通过like模糊查询来实现,先不说性能低,这对于一个搜索引擎是远远不够的。
针对上面数据库的不足,所以才出 ...