- 浏览: 1064720 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
有的应用有些要求,对于某类型的内容即使满足条件了,但是也不能被搜索出来,lucene中提供了过滤器的功能,通过自定义的过滤器继承Filter,从而实现特定的过滤功能。
Filter是一种过滤行为BitSet是一种位集合队列,这个队列中只有两种取值,TRUE或FALSE,LUCENE以这两种取值代表文档是否被过滤,也就是说,LUCENE返回结果时,会首先遍历BITSET,仅将那些对应值为TRUE的文档返回。
过滤器:
package com.filter;
import java.io.IOException;
import java.util.BitSet;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermDocs;
import org.apache.lucene.search.Filter;
public class AdvancedSecurityFilter extends Filter {
//安全级别的常量
public static final int ADVANCED=0;
@Override
public BitSet bits(IndexReader reader) throws IOException {
//首先初始化一个BITSET对象
final BitSet bits = new BitSet(reader.maxDoc());
//先将整个集合设置为TRUE,表示当前集合内的所有文档都是可以被检索到的。
bits.set(0,bits.size()-1);
//构造一个TERM对象,代表最高安全级别
Term term = new Term("securitylevel",ADVANCED+"");
//从索引中搜索出所有最高安全级别的文档
TermDocs termDocs = reader.termDocs(term);
//遍历每个文档,并将其
while(termDocs.next())
{
bits.set(termDocs.doc(),false);
}
return bits;
}
}
过滤器使用实例:
public class FilterDemo {
/**
* @param args
*/
public static final int ADVANCED=0;
public static final int MIDDLE =1;
public static final int NORMAL=2;
public static void main(String[] args) {
try {
/*File file = new File("d://demo");
Analyzer luceneAnalyzer = new StandardAnalyzer();
IndexWriter writer = new IndexWriter(file, luceneAnalyzer, false);
Document doc1 = new Document();
Field f1 = new Field("bookNumber","0003",Field.Store.YES,Field.Index.UN_TOKENIZED);
Field f2 = new Field("bookName","非对称模型",Field.Store.YES,Field.Index.UN_TOKENIZED);
Field f3 = new Field("securitylevel",ADVANCED+"",Field.Store.YES,Field.Index.UN_TOKENIZED);
doc1.add(f1);
doc1.add(f2);
doc1.add(f3);
Document doc2 = new Document();
Field f4 = new Field("bookNumber","0001",Field.Store.YES,Field.Index.UN_TOKENIZED);
Field f5 = new Field("bookName","钢铁战士",Field.Store.YES,Field.Index.TOKENIZED);
Field f6 = new Field("securitylevel",MIDDLE+"",Field.Store.YES,Field.Index.UN_TOKENIZED);
doc2.add(f4);
doc2.add(f5);
doc2.add(f6);
Document doc3 = new Document();
Field f7 = new Field("bookNumber","0004",Field.Store.YES,Field.Index.UN_TOKENIZED);
Field f8 = new Field("bookName","黑猫警长",Field.Store.YES,Field.Index.TOKENIZED);
Field f9 = new Field("securitylevel",NORMAL+"",Field.Store.YES,Field.Index.UN_TOKENIZED);
doc3.add(f7);
doc3.add(f8);
doc3.add(f9);
writer.addDocument(doc1);
writer.addDocument(doc2);
writer.addDocument(doc3);
writer.setUseCompoundFile(true);
writer.optimize();
writer.close();*/
Term begin = new Term("bookNumber","0001");
Term end = new Term("bookNumber","0004");
RangeQuery q = new RangeQuery(begin,end,true);
IndexSearcher searcher = new IndexSearcher("d://demo");
System.out.println(q.toString());
//通过将自定义的过滤器配置在search方法中,从而达到过滤的目的。
Hits hits = searcher.search(q,new AdvancedSecurityFilter());
for(int i=0;i<hits.length();i++)
{
System.out.println(hits.doc(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
发表评论
-
使用Lucene-Spatial实现集成地理位置的全文检索
2015-05-27 17:33 1330Lucene通过Spatial包提供了对基于地理位置的 ... -
Lucene4.10.2开发之高亮显示
2015-05-05 23:13 596转载请注明,原创地址,谢谢配合! http://qindo ... -
bobo-browse
2011-02-10 10:22 2803bobo-browse 是一款用java写的lucene扩展组 ... -
Lucene 2 通过updateDocument更新索引
2010-12-30 15:47 2061package com.lucene; i ... -
Lucene 3建立索引和查询索引详解
2010-12-22 23:02 1843public void index() throws Corr ... -
Lucene3 查询索引
2010-12-22 22:46 1772package lucene3; import java.i ... -
Lucene3 建立索引
2010-12-22 22:25 1404Lucene3在建立索引的API上有比较大的变化。直接上程序: ... -
Lucene 3.0的简单解析及变化
2010-12-22 21:59 1143一、 概述 Lucene3 ... -
Lucene分词器之庖丁解牛
2010-12-22 07:47 3491注意:这里配置环境变量要重新启动系统后生效 我现在测试 ... -
Lucene从结果中取出数据
2010-12-21 20:23 1235有些应用,比如我们首先要搜索一个Person的索引文件,然后通 ... -
Lucene对于短语匹配查询的用法
2010-12-21 17:41 1378通常对于ID查询或者是比较确定字段内容的查询,我们就用: T ... -
Lucene 对所查的结果进行排序
2010-12-20 23:01 1224前面介绍完查询以后,现在要对查询结果进行排序的显示。 代码: ... -
Lucene 搜索方法(模糊搜索)
2010-12-20 11:54 3515LUCENE提供了一种模糊搜 ... -
Lucene 搜索方法(多短语搜索)
2010-12-20 11:42 1193短语搜索解决了短语搜索的问题,在很多情况下,用户输入某个关键字 ... -
Lucene 搜索方法(短语搜索)
2010-12-20 11:15 1827用户在搜索的时候,更多的情况是输入一个以上的关键字,这些关键字 ... -
Lucene 搜索方法(前缀搜索)
2010-12-20 10:27 1887PrefixQuery是一种前缀搜索,在检索的时候,常常需要进 ... -
Lucene 的索引读取工具(IndexReader)
2010-12-19 23:00 1613Lucene有一个很重要的工具IndexReader负责对索引 ... -
Lucene 搜索方法(范围搜索)
2010-12-19 22:54 1293在某些情况下,用户需要查找一定范围内的文档,比如时间,ID等。 ... -
Lucene 搜索方法(布尔搜索)
2010-12-19 22:04 1622布尔搜索: 布尔查询的对象中,包含一个子句的集合。各种子句间都 ... -
Lucene 搜索方法(词条搜索)
2010-12-19 21:15 1262词条搜索是LUCENE最为简单的一种搜索方式,通过对某个固定的 ...
相关推荐
《深入理解Lucene5:Filter过滤器的奥秘》 在全文搜索引擎的开发过程中,Lucene作为一款强大的开源搜索引擎库,扮演着至关重要的角色。它提供了丰富的功能,使得开发者能够快速构建高效的搜索系统。其中,Filter...
在第十九讲“Lucene过滤”中,我们将探讨Lucene内置的过滤器机制,这是优化搜索结果和提升用户体验的关键技术。 Lucene的核心组件之一是`org.apache.lucene.search.Filter`,它提供了一种方法来限制搜索结果,确保...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
在Java中,Lucene和Solr等搜索库就内置了强大的分词过滤器。 ### 7. 触发资源访问事件的过滤器(Filters that Trigger Resource Access Events) 这类过滤器用于监控和控制对特定资源的访问,如文件、数据库记录或...
4. **可扩展性**:Lucene提供了丰富的API,开发者可以定制分词器、过滤器、评分函数等,以适应各种特定需求。 5. **跨平台**:Lucene用Java编写,因此可以运行在任何Java兼容平台上,具有良好的跨平台性。 在...
它包含了一个标准分词器(StandardTokenizer)、一个标准过滤器(StandardFilter)以及一些其他过滤器,如字母数字转换过滤器(LowerCaseFilter)和去除停用词过滤器(StopFilter)。这些组件协同工作,将输入文本...
2. **分词器(Tokenizer)与过滤器(Filter)**:Lucene支持自定义的分词规则,如`StandardTokenizer`和`LowerCaseFilter`。这些在`analysis`包下的源码中可以找到,它们负责将原始文本转换为可搜索的术语。 3. **...
首先,"lucene-analysis.jar"是Lucene分析模块的核心库,包含了各种文本分析器、过滤器和令牌化工具。文本分析是Lucene处理文本数据的第一步,它涉及到文本的分词、去除停用词、词形还原等一系列操作,目的是将复杂...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
除了基本的搜索外,Lucene还支持过滤器(Filter)和排序(Sort)功能。过滤器可以快速筛选满足特定条件的文档,而排序则允许用户自定义搜索结果的排列顺序。 8. **更新与删除** Lucene允许动态更新和删除文档,...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...