随笔分类 - 搜索引擎
Lucene
摘要:之前基于Lucene分词组件探索了按时间位置进行中文分词的算法,中文分词方面采用了最大逆向匹配算法,由于时间信息保存在一个List中,当每个词被切割出来时,其时间信息将会同时按序提取。将分词结果写入倒排索引的词表,时间信息写入到倒排表中的offset属性中。停词表和词汇表都保存在HashSet中。
阅读全文
摘要:在基于单词的检索方法中,同义词会降低检索算法的召回率(Recall),而多义词的存在会降低检索系统的准确率(Precision)。
阅读全文
摘要:搜索主要有以下几种算法:(引用刘超觉先博客) 枚举算法: 也即列举问题的所有状态从而寻找符合问题的解的方法。 适合用于状态较少,比较简单的问题上。 广度优先搜索: 从初始点开始,根据规则展开第一层节点,并检查目标节点是否在这些节点上,若没有,再将所有的第一层的节点逐一展开,得到第二层节点,如没有,则
阅读全文
摘要:1.聚类定义: 聚类算法将一系列文档聚团成多个子集或簇(cluster),其目标是建立类内紧密、类间分散的多个簇。换句话说,聚类的结果要求簇内的文档之间要尽可能相似,而簇间的文档之间则要尽可能不相似。 聚类是无监督学习(unsupervised learning)的一种最普遍的形式。无监督也意味着不
阅读全文
摘要:最近发现Lucene6.6版本添加索引数据字符数超过32766时,出现报错,而Lucene4.6版本中则未出现这一问题,原因如下: 概述: 添加索引数据时,对于分词字段,分词后的Term会和BYTE_BLOCK_SIZE比较,若该Term超过BYTE_BLOCK_SIZE,则视为超长Term,不添加
阅读全文
摘要:由于项目需求,需要将Lucene4.6升级到Lucene6.6,因此我对这之间的所有重要的API改动做了搜集;特别重要的改变加粗显示。 Lucene4.7改动: LUCENE-5405: Make ShingleAnalzyerWrapper.getWrappedAnalyzer() public
阅读全文
摘要:由于索引的文件量比较大,而且应用中不需要对文档进行打分,只需要查询出所有满足条件的文档。所以需要跳过打分来提高查询效率。一开始想用ConstantScoreQuery,但是测试发现这个类虽然让所有返回的文档打分都为1.0并没有提高查询效率,因此查资料发现可以用Filter实现跳过打分,其中又以 Fi
阅读全文
摘要:有个新的技术需求,需要对Lucene4.x的源码进行扩展,把如下的有时间位置的文本写入倒排索引,为此,我扩展了一个TimeTokenizer分词器,在这个分词器里将时间信息写入 偏移量Offset中。扩展了一个Filter,最后查询时通过filter把时间信息传进去过滤想要的时间范围之内的结果。 L
阅读全文
摘要:Lucene在6.0版本之后彻底废除了Filter的使用,采用BooleanQuery来实现Filter的功能,核心代码如下: (对Lucene6之前的Filter不够熟悉的请看这个:http://www.cnblogs.com/forfuture1978/archive/2010/05/19/17
阅读全文
摘要:之前在学习Lucene这个全文检索工具,为项目搜索引擎的开发打下基础。在这里先分享一下关于Lucene的学习心得。 核心的学习流程是:索引文件格式--索引创建过程--检索流程。 1.首先建议参看这篇精简的博文,对Lucene的索引创建和检索功能有个了解。https://www.ibm.com/dev
阅读全文

浙公网安备 33010602011771号