`
qindongliang1922
  • 浏览: 2183870 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117532
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125921
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59907
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

Lucene4.3开发之插曲之烽火连城

阅读更多
转载请注明,原创地址,谢谢配合!
http://qindongliang1922.iteye.com/blog/1938234




上次散仙给大家总结了Lucene中,一些常用Filter的用法和例子,今天,我们在来看下不在Filter家族中的一个特殊的filter,属于Lucene捐赠模块的特殊包中的类DuplicateFilter,这个filter的作用是用来对某个字段进行去重操作的,类似数据库中的Distinct关键字,可以实现对某个列的结果集去重,这个去重的字段,一般情况下是不建议分词的,因为分词后,可能去重效果不准确.


举个例子,来说明分词后去重,会造成什么情况,假如我们的索引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简洁高效的来完成这项任务。


转载请注明,原创地址,谢谢配合!
http://qindongliang1922.iteye.com/blog/1938234

0
3
分享到:
评论

相关推荐

    lucene4.3 按坐标距离排序

    在"lucene4.3 按坐标距离排序"这个主题中,我们将探讨如何在Lucene 4.3版本中利用地理位置信息进行文档排序,特别是在处理地理空间搜索时的应用。 首先,Lucene 4.3引入了对地理空间搜索的支持,这允许我们根据地理...

    lucene4.3源码

    Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会...

    lucene4.3工具类

    lucene4.3增删改查的的一个工具类,对新手来说是一份不可多得的入门资料。

    lucene 4.3所用到的包

    全文检索lucene 4.3 所用到的3个jar包,包含lucene-queryparser-4.3.0.jar、 lucene-core-4.3.0.jar、lucene-analyzers-common-4.3.0.jar。

    Lucene4.3src 源代码

    lucene4.3源代码 censed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information ...

    lucene-4.3.1资源

    Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。在Java编程环境中,它为开发者提供了强大的文本检索功能,使得在海量数据中快速查找相关信息变得简单易行。本篇文章将详细探讨Lucene 4.3.1版本的...

    基于lucene4.3的知识图谱搜索引擎XunTa(一种用"知识点"来找人的搜人引擎).zip

    1.XunTa是在lucene4.3上创建的通过“知识点”来找人的搜人引擎。  输入一个关键词(或组合),XunTa返回一个排名列表,排在前面的人是与该关键词(组合)最相关的“达人”。  可访问 http://www.xunta.so立即体验...

    lucene的IKAnalyzer以及兼容4.3

    本文将深入探讨IKAnalyzer的特性和其在Lucene 4.3中的兼容性问题及其解决方案。 **IKAnalyzer简介** IKAnalyzer( Intelligent Keyword Analyzer)是一款基于Java实现的中文分词工具,它主要针对中文的特性进行了...

    基于lucene的开发JavaEE项目

    《基于Lucene的JavaEE项目开发详解》 在信息技术领域,搜索引擎已经成为不可或缺的一部分,而Lucene作为开源全文搜索引擎库,以其高效、灵活的特点被广泛应用于各种JavaEE项目中。本项目将深入探讨如何利用Lucene...

    Lucene3.4开发入门.pdf

    Lucene3.4开发入门.pdf

    Lucene.net开发最全文档

    **Lucene.net 开发完全指南** Lucene.net 是一个开源的全文搜索引擎库,它是 Apache Lucene 的 .NET 版本,适用于 .NET 平台。Lucene.net 提供了高效、可扩展的搜索功能,广泛应用于网站内容检索、文档搜索、数据库...

    lucene2.9开发指南

    《Lucene2.9开发指南》是一份专为初级开发者准备的资料,旨在详细介绍如何使用开源全文搜索工具包Lucene2.9.1。Lucene作为一个强大的文本搜索库,其核心功能包括建立索引和执行搜索。以下是关于Lucene2.9开发的一些...

    基于lucene.net开发的个人知识库

    Lucene.Net的设计理念是将复杂的搜索引擎技术封装在简单易用的API之下,使得开发者可以专注于应用逻辑,而无需深入理解搜索引擎的底层原理。 在这个个人知识库项目中,开发者可能已经实现了以下关键功能: 1. **...

    Lucene开发手册

    【Lucene开发手册】 Lucene是一个开源的全文检索库,由Apache软件基金会开发,主要用Java编写。作为一套API,Lucene提供了构建高效、可扩展的搜索引擎所需的核心工具。它并非一个完整的搜索引擎产品,而是一个搜索...

    Lucene搜索引擎开发权威经典(附盘源码)【于天恩】.zip

    《Lucene搜索引擎开发权威经典》是由于天恩编著的一本深入探讨Lucene搜索引擎开发的专业书籍,这本书结合源码分析,旨在帮助读者掌握Lucene的核心技术和应用实践。Lucene是Apache软件基金会的一个开放源代码项目,它...

    Lucene开发详解.pdf

    ### Lucene开发详解 #### 一、Lucene简介 Lucene是一个高性能、全功能的文本搜索引擎库,由Doug Cutting创建并捐赠给Apache Software Foundation。它主要用于构建全文搜索应用程序,能够帮助开发者快速地在其应用...

    lucene开发流程

    Lucene 是一个高性能、全文本搜索库,广泛应用于开发全文检索系统。要理解Lucene的开发流程,我们首先需要了解其基本概念和步骤。以下是对Lucene开发流程的详细说明: 1. **数据获取**: 开发流程的第一步是从各种...

    lucene 的开发包6.6

    《Apache Lucene 6.6 开发详解》 Apache Lucene 是一个开源全文搜索引擎库,由Java编写,设计为高性能、可扩展的信息检索应用程序。它提供了丰富的搜索功能,包括索引、查询、排序等,被广泛应用于各种信息管理和...

    Lucene开发指南

    《Lucene开发指南》是一份综合性的学习资料,旨在帮助开发者深入理解和熟练运用Apache Lucene这一强大的全文搜索引擎库。Lucene是Java语言实现的开源项目,广泛应用于信息检索、数据分析和大数据处理等领域。本指南...

    lucene4.7 开发简单实例

    《Lucene 4.7 开发简单实例详解》 Lucene 是一款强大的全文搜索引擎库,广泛应用于各种信息检索系统中。在本实例中,我们将深入探讨Lucene 4.7版本,涵盖索引的创建、修改、删除,以及查询时的排序、分页、优化和...

Global site tag (gtag.js) - Google Analytics