文档章节

lucene4.7 过滤Filter(六) ---特殊的filter(DuplicateFilte)

一枚Sir
 一枚Sir
发布于 2014/04/11 10:33
字数 618
阅读 2261
收藏 3

举个例子,来说明分词后去重,会造成什么情况,假如我们的索引name一列中有中国,和伟大的中国,那么就对这个name列去重后,就会发现lucene只保留了伟大的中国这个字段,为什么呢?因为切词后伟大的中国会被分成伟大|的|中国,进行去重时,Lucene认为中国是重复的,而伟大的中国是不重复的,又因为伟大的中国里包含中国,所以最后的结果就会只保留伟大的中国,而没有中国。所以无论使用这个过滤器去重,还是使用grouping或fact去重,大多数情况下操作的字段是不能分词的,这一点需要注意!
下面我们来具体看下DuplicateFilter这个特殊的过滤器,怎么使用。在这之前我们先来看下我们简单的测试数据.

name===type
a===>中国
a===>法国
b===>中国
c===>英国
d===>英国
b===>英国

分别对对name和type去重后的效果(注意一次只能去重一个字段)

a
c
d
b
法国
中国
英国

下面给出具体的代码实现,需要额外导入的包

org.apache.lucene.sandbox.queries

核心代码

  //群交流 324714439
  //String field="name";
  String field="type";
  DuplicateFilter filter=new DuplicateFilter(field);//去重过滤
  Query q=new MatchAllDocsQuery();//对所有结果去重
  TopDocs s=search.search(q, filter, 100);

可以看出,核心的代码量很少,却可以高效的完成去重工作,去重技术在我们的实际运用中也是一项很常用的技术,有时候我们可能只需要查看不重复的记录,而没有一些类似统计的功能,如果需要去重并统计个数,那么就需要使用分组功能或分面功能了,当然,如果我们只需要简单的对字段去重,那么就可以使用DuplicateFilter简洁高效的来完成这项任务。

© 著作权归作者所有

一枚Sir
粉丝 119
博文 209
码字总数 350904
作品 0
朝阳
架构师
私信 提问
PHP filter_input() 函数

定义和用法 filter_input() 函数从脚本外部获取输入,并进行过滤。 本函数用于对来自非安全来源的变量进行验证,比如用户的输入。 本函数可从各种来源获取输入: INPUT_GET INPUT_POST INPUT...

学习者8
2013/03/07
153
0
javaweb开发之Filter

一、简介 在Servlet2.3规范中定义了过滤器,它对servlet容器调用servlet的过程进行拦截,从而在servlet进行响应处理的前后实现一些特殊的功能。 过滤器实现了一个责任链的模式。多个过滤器形...

小米米儿小
2013/12/06
593
0
Lucene4.3开发之第六步之分神中期(六)

本篇要介绍的是关于过滤方面的知识,也就是Filter,如果了解Solr的朋友,肯定都会知道Solr里面fq这个参数,这个参数的作用其实就是lucene里面的过滤,对一些q参数查询的结果集,做过滤或者限...

heroShane
2014/02/21
105
0
java filter利用httpclient请求远程接口并返回json数据

有个大问题,搜了半天,请求万能的OSCer给个答案。 java的filter是不能给客户端返回响应信息的。但是现在,我用filter过滤所有请求,有一些特殊url的请求是要访问远程接口的,过滤出来后用h...

谦谦君子淑女好逑
2015/06/01
4.7K
3
J2EE Architecture(8)

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1606543 J2EE Architecture(8) 1、过滤 过滤(filtering)是Servlet2.3版的新...

chszs
2007/05/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
29分钟前
4
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
4
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
13
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部