个人简介

Echo Blog


江湖无名 安心练剑
  • Lucene-20-expressions 表达式
    expressions 有时候我们在做lucene的结果展示的时候可能需要对多个列的内容进行计算,根据多个field对应的值做数值方面的运算。 lucene自4.6版本起,提供了用于运算的expression模块; expression分为两部分: org.apache.lucene.expressions:提供了字段绑定和相关的表达式参数传递的功能; org.apache.luc...
    2022-01-10 13:01:55 | Lucene
  • Lucene-18-facet lucene搜索之facet查询原理和facet查询实例
    Facet说明 我们在浏览网站的时候,经常会遇到按某一类条件查询的情况,这种情况尤以电商网站最多,以天猫商城为例,我们选择某一个品牌,系统会将该品牌对应的商品展示出来,效果图如下: 如上图,我们关注的是品牌,选购热点等方面,对于类似的功能我们用lucene的term查询当然可以,但是在数据量特别大的情况下还用普通查询来实现显然会因为FSDirectory.open等耗时的操作造成查询...
    2022-01-10 13:01:55 | Lucene
  • Lucene-17-sorted 排序
    自定义排序说明 我们在做lucene搜索的时候,可能会需要排序功能,虽然lucene内置了多种类型的排序,但是如果在需要先进行某些值的运算然后在排序的时候就有点显得无能为力了; 要做自定义查询,我们就要研究lucene已经实现的排序功能,lucene的所有排序都是要继承FieldComparator,然后重写内部实现,这里以IntComparator为例子来查看其实现; IntComp...
    2022-01-10 13:01:55 | Lucene
  • Lucene-16-grouping 分组
    grouping介绍 我们在做lucene搜索的时候,可能会用到对某个条件的数据进行统计,比如统计有多少个省份,在sql查询中我们可以用distinct来完成类似的功能,也可以用group by来对查询的列进行分组查询。 在lucene中我们实现类似的功能怎么做呢? 比较费时的做法时我们查询出所有的结果,然后对结果里边的省份对应的field查询出来,往set里边放,显然这种做法效率低,...
    2022-01-10 13:01:55 | Lucene
  • Lucene-15-highlighter 语法高亮
    highlighter介绍 我们在做查询的时候,希望对我们自己的搜索结果与搜索内容相近的地方进行着重显示。 搜索引擎展示的结果中对用户的输入信息进行了配色方面的处理,这种区分正常文本和输入内容的效果即是高亮显示; 这样做的好处: 视觉上让人便于查找有搜索对应的文本块; 界面展示更友好; lucene提供了highlighter插件来体现类...
    2022-01-10 13:01:55 | Lucene
  • Lucene-14-suggest lucene 搜索之联想词提示之 suggest 原理和应用
    InputIterator说明 联想词 lucene的联想词是在org.apache.lucene.search.suggest包下边,提供了自动补全或者联想提示功能的支持。 InputIterator 是一个支持枚举term,weight,payload三元组的供suggester使用的接口,目前仅支持AnalyzingSuggester,FuzzySuggester andAnal...
    2022-01-10 13:01:55 | Lucene
  • Lucene-13-suggest lucene 搜索之拼写检查和相似度查询提示 spellcheck
    suggest应用场景 用户的输入行为是不确定的,而我们在写程序的时候总是想让用户按照指定的内容或指定格式的内容进行搜索,这里就要进行人工干预用户输入的搜索条件了; 我们在用百度谷歌等搜索引擎的时候经常会看到按键放下的时候直接会提示用户是否想搜索某些相关的内容,恰好lucene在开发的时候想到了这一点,lucene提供的suggest包正是用来解决上述问题的。 包介绍 suggest...
    2022-01-10 13:01:55 | Lucene
  • Lucene-12-lucene 搜索之 IndexSearcher 实现分页查询
    IndexSearcher 常用方法 文档信息本身 IndexSearcher.doc(int docID) 获取索引文件中的第n个索引存储的相关字段,返回为Document类型,可以据此读取document中的Field.STORE.YES的字段; IndexSearcher.doc(int docID, StoredFieldVisitor fieldVisitor) 获取S...
    2022-01-10 13:01:55 | Lucene