- 浏览: 313720 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (286)
- 设计模式 (14)
- spring (5)
- 开发工具 (12)
- java (19)
- apache.commons工具 (7)
- ibaits (5)
- extjs4.0 (4)
- 数据库 (2)
- spring工具类 (2)
- jquery1.8 (32)
- 杂记 (1)
- linux (2)
- Quart (1)
- springMVC (2)
- webservice (1)
- oracle (5)
- dwr (6)
- jbmp3 (27)
- lucene3.5 (27)
- javascript (18)
- hibernate3.3.2 (27)
- spring事务管理 (10)
- nio (2)
- strust2 (3)
- jvm (7)
- jquery-easyui-1.2.6 (22)
- 多线程 (14)
- maven (3)
- 常用正则表达式 (4)
最新评论
-
HF_SKY000:
请问:
一、能否提供一下密钥库文件的生成方法?
二、密钥库的密 ...
Java sslSocket 聊天实例
有的应用有些要求,对于某类型的内容即使满足条件了,但是也不能被搜索出来,lucene中提供了过滤器的功能,
通过自定义的过滤器继承Filter,从 而实现特定的过滤功能。Filter是一种过滤行为BitSet是一种位集合队列,
这个队列中只有两种取值,TRUE或FALSE,LUCENE以这两种取值代表文档是否被过 滤,也就是说,LUCENE返回结果时,
会首先遍历BITSET,仅将那些对应值为TRUE的文档返回。
public interface FilterAccessor {
public String[] values();
public String getField();
public boolean set();
}
public class MyIDFilter extends Filter {
private FilterAccessor accessor;
public MyIDFilter(FilterAccessor accessor) {
this.accessor = accessor;
}
@Override
public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
//创建一个bit,默认所有的元素都是0,表示都不显示
OpenBitSet obs = new OpenBitSet(reader.maxDoc());
if(accessor.set()) {
set(reader,obs);
} else {
clear(reader, obs);
}
return obs;
}
private void set(IndexReader reader,OpenBitSet obs) {
try {
int[] docs = new int[1];
int [] freqs = new int[1];
//获取id所在的doc的位置,并且将其设置为0
for(String delId:accessor.values()) {
//获取TermDocs
TermDocs tds = reader.termDocs(new Term(accessor.getField(),delId));
//会见查询出来的对象的位置存储到docs中,出现的频率存储到freqs中,返回获取的条数
int count = tds.read(docs, freqs);
if(count==1) {
obs.set(docs[0]);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void clear(IndexReader reader,OpenBitSet obs) {
try {
//先把元素填满,整个集合设置为TRUE,表示当前集合内的所有文档都是可以被检索到的
obs.set(0,reader.maxDoc());
int[] docs = new int[1];
int [] freqs = new int[1];
for(String delId:accessor.values()) {
//获取TermDocs
TermDocs tds = reader.termDocs(new Term(accessor.getField(),delId));
//会见查询出来的对象的位置存储到docs中,出现的频率存储到freqs中,返回获取的条数
int count = tds.read(docs, freqs);
if(count==1) {
//将这个位置的元素删除
obs.clear(docs[0]);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void searchByCustomFilter() {
try {
IndexSearcher searcher = new IndexSearcher(IndexReader.open(FileIndexUtils.getDirectory()));
Query q = new TermQuery(new Term("content","java"));
TopDocs tds = null;
tds = searcher.search(q,
new MyIDFilter(new FilterAccessor() {
@Override
public String[] values() {
return new String[]{"Ant.she","Ant.txt","java.txt"};
}
@Override
public boolean set() {
return true;
}
@Override
public String getField() {
return "filename";
}
}),200);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
for(ScoreDoc sd:tds.scoreDocs) {
Document d = searcher.doc(sd.doc);
System.out.println(sd.doc+":("+sd.score+")" +
"["+d.get("filename")+"【"+d.get("path")+"】--->"+
d.get("size")+"------------>"+d.get("id"));
}
searcher.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
发表评论
-
二十七、Luence在项目中运用
2012-12-26 15:03 1091public class LuceneContext { ... -
二十六、solr的基本使用
2012-12-26 10:26 958public class Message { p ... -
二十五、solr与tomcat的整合
2012-12-25 13:52 10471、solr是全文搜索服务器,专门用户管理索引的。 2 ... -
二十四、通过NRTManager和SearchManager实现近实时搜索
2012-12-21 11:35 1347是否进行实时搜索 实时搜索(近实时搜索) ... -
二十三、高亮显示
2012-12-20 09:24 1006public void lighter01() { ... -
二十二、Tika
2012-12-20 09:24 956Tika是2008年才产生的一个apache的项目,主要用于打 ... -
二十一、Luke
2012-12-20 09:24 807luke是一个查询索引的工具,使用时必须注意:版本要与luce ... -
十七、搜索过滤
2012-12-20 09:23 628public void searcherByFilter(St ... -
十九、自定义QueryParser
2012-12-19 16:28 1217原因: 1、对于某些Quer ... -
十八、自定义评分
2012-12-19 16:18 789public class MyCustomScoreProvi ... -
十六、搜索排序
2012-12-19 12:14 1026public void searcherBySort(Stri ... -
十五、实现简单同义词分词器
2012-12-19 11:41 1252public interface SamewordContex ... -
十四、中文分词器
2012-11-28 13:49 860中文分词器 : Paoding:庖丁解牛分词器。 ... -
十三、自定义Stop分词器
2012-11-28 13:42 759import java.io.Reader; impor ... -
十二、Attribute
2012-11-28 13:20 822Attribute : ... -
十一、分词器的核心类
2012-11-28 13:12 900Analyzer : SimpleAnalyz ... -
十、分页搜索
2012-11-27 17:30 873分页查询有两种实现方式: 1、再查询 ... -
九、Queryparser
2012-11-27 17:24 993Mike 默认域包含mike Mi ... -
八、其他搜索Query
2012-11-27 10:30 653TermRangeQuery : 字母范围搜索 ... -
七、搜索的简单实现(TermQuery)
2012-11-26 17:12 990TermQuery只能精确匹配字符串(包括分词后的字符串,不 ...
相关推荐
在Spring Security 4中,我们可以通过自定义过滤器来扩展其功能,以满足特定的安全需求。在这个小例子中,我们将探讨如何创建并集成自定义过滤器,以及它在Spring Security中的工作原理。 首先,我们需要理解Spring...
### Java自定义过滤器知识点详解 #### 一、概述 在Java Web开发中,过滤器(Filter)是一种非常实用的功能,它可以对用户请求进行预处理或对响应进行后处理。通过配置过滤器,开发者可以在不修改任何现有代码的...
本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...
为了实现自定义过滤器,我们可以使用 DevExpress 的 GridControl 提供的 FilterControl 事件。在这个事件中,我们可以编写自定义的过滤器逻辑来处理复杂的查询操作。下面是一个简单的示例代码: ```csharp private ...
二、创建自定义过滤器 要创建自定义过滤器,首先需要继承适当的过滤器基类。对于处理响应内容,我们可以继承`System.Web.Mvc.ActionFilterAttribute`。然后,重写`OnResultExecuted`或`OnResultExecuting`方法。这两...
Vue不仅内置了一些过滤器,还允许开发者自定义过滤器以满足特定需求。 首先,我们来看看Vue内置过滤器的使用。 Vue内置过滤器非常丰富,包括但不限于: - `capitalize`:将字符串首字母大写。 - `uppercase`:将...
二、自定义编码过滤器 在上面的代码中,我们定义了一个名为 EncodingFilter 的自定义编码过滤器,该过滤器用于防止中文乱码。该过滤器实现了 Filter 接口,并重写了 init()、doFilter() 和 destroy() 方法。 * ...
CAS客户端自定义核心过滤器,继承CAS的AbstractCasFilter自定义AuthenticationFilter
vue.js的filter定义的方式,已经简单的demo,自定义过滤器如何给文字加颜色
在本场景中,我们关注的是如何在ABP框架中添加Block Plus自定义过滤器。Block Plus是一种增强AngularJS应用功能的插件,它提供了一种便捷的方式来创建和管理自定义过滤器,从而对数据进行处理和格式化。 在...
"SpringSecurity学习之自定义过滤器的实现代码" Spring Security学习之自定义过滤器的实现代码主要介绍了Spring Security学习之自定义过滤器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有...
在Django框架中,自定义过滤器是一个强大的特性,它允许开发者扩展模板语言的功能,以处理特定的逻辑操作。过滤器本质上是Python函数,它们接收一个值作为输入,然后对其进行处理,返回一个新的值。在本文中,我们将...
自定义过滤器,过滤请求接口的请求,认证用户并记录日志
#### 二、自定义过滤器的基础概念 自定义过滤器本质上就是一个Python函数,它可以接收一个或两个参数,然后返回处理后的结果。这些过滤器可以在Django的模板文件中被调用,用来格式化数据、执行简单的逻辑操作等。...
在本项目中,“matlab自定义过滤器为先生的HDMI缩放.zip”是一个包含MATLAB源码的压缩包,用于实现自定义的过滤器,主要用于处理HDMI信号的缩放问题。MATLAB是一种强大的数学计算和编程环境,特别适合进行信号处理和...
SpringMVC+Shiro自定义过滤器的实现代码 itle"springmvc+shiro自定义过滤器的实现代码"所涉及的知识点如下: 1. SpringMVC拦截器 在SpringMVC中,拦截器(Interceptor)是一种特殊的Bean,它可以在请求处理之前、...