![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
全文检索
文章平均质量分 96
黄智霖-blog
骨灰级技术爱好者
展开
-
相似度算法--莱文斯坦距离加入同义词逻辑
在问题检索中,依赖文本相似度给用户做推荐问题,假设1.0分为满分,那么:1.0分表示完全匹配:可以将问题准确推送给用户0.8分表示高度相似:可以将问题推荐给用户0.6分表示低度相似:......根据这样的规则对用户的检索做出回应。其实Lucene基于TF-IDF改造的相关度排序算法也有分值,但是和业务所需要的相似度不贴合,所以其得分只作为第一步结果筛选依据。关于Lucene打分公式可以看看这篇文章。二、莱文斯坦距离文本相似度算法有很多,这里选择的是编辑距离算法-莱文斯坦距离(Le原创 2021-02-01 20:58:16 · 5128 阅读 · 30 评论 -
Lucene的IndexSearcher管理
一、场景Lucene创建一个searcher需要先打开一个DirectoryReader,用以从目录中读取索引,而此过程的代价是比较高的。同时searcher只做查询,不涉及到索引的更新操作,自然而然我们就会想到使用单例模式,重复使用。但是我们的索引文件如果发生了更新,对应的searcher也需要同步更新,就不是普通的单例那么简单了,这里介绍几种我使用过的有效的管理方式。二、IndexSe...原创 2019-01-23 16:17:20 · 27271 阅读 · 2 评论 -
Lucene检索源码解析(上)
有了Lucene得分公式(戳这里看详情)的基础,我们现在先跳过写索引的步骤,直接解析查询这块儿的代码(还是基于5.5.0)。另外由于内容实在太多,所以文章分为上下两部分介绍,上部分主要介绍实际检索前的一些处理,下部分介绍检索和评分。一、场景假设现在已经有多个文档被索引成功,索引目录为:D:\index。我们要对name域(Field)进行查询,代码如下:Path path = Pat...原创 2019-04-22 18:21:48 · 12261 阅读 · 3 评论 -
Lucene打分公式详解(TFIDFSimilarity)
本文章基于Lucene5.5,对其默认使用的打分公式(TFIDFSimilarity)进行解析一、余弦相似度算法由于网络上有很多关于VSM(向量空间模型)的解释,这里就不花费篇章做基本理论的描述了,只总结一下算法即可。给定两个文本,按照余弦相似度算法进行相似度度量一般需要以下步骤:1、提取词条(term)进行向量化。也就是将文本进行分词,每个不同的词都表示为一个term(也就是维度)。...原创 2019-04-15 21:22:11 · 13759 阅读 · 5 评论 -
Lucene检索源码解析(下)
上文已经介绍了检索前的准备工作,本文接着上文的内容,继续剖析检索和打分操作一、获取LeafCollector我们先来看一下IndexSearcher的search方法:protected void search(List<LeafReaderContext> leaves, Weight weight, Collector collector) throws ...原创 2019-04-26 17:08:58 · 18533 阅读 · 8 评论