- 浏览: 243549 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
243035985:
顶红色的那段
eclipse增加struts.xml智能提示(绝对能用) -
spiritdyh:
不错!!!
eclipse增加struts.xml智能提示(绝对能用) -
xiarilian12:
lovelimx 写道{myEquipSN:encodeURI ...
以"对象"方式接收json数据.(解决乱码问题) -
xiarilian12:
qiaolevip 写道用不成,应该是版本的问题吧。JSONO ...
以"对象"方式接收json数据.(解决乱码问题) -
qiaolevip:
用不成,应该是版本的问题吧。JSONObject jsonOb ...
以"对象"方式接收json数据.(解决乱码问题)
1. 排序
1.1. Sort类
1.2. SortField类
1.3. 指定排序的法则
1.3.1.按照文档的得分降序排序
1.3.2.按文档的内部ID升序排序
1.3.3.按照一个Field来排序
1.3.4.按照多个Field来排序
1.3.5.改变SortField中的Locale信息
2. 过滤器
3. 分析器Analysis
3.1. 自带分析器和过滤器
3.2. 第三方过分析器
3.2.1.2. 设定正向最大匹配的字数
3.2.1.3. 添加新词
4. 索引的合并
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaoping8411/archive/2010/03/24/5413738.aspx
1.1. Sort类
public Sort() public Sort(String field) public Sort(String field,Boolean reverse) //默认为false,降序排序 public Sort(String[] fields) public Sort(SortField field) public Sort(SortField[] fields) Sort sort=new Sort(“bookname”);按照“bookname“这个Field值进行降序排序 Sort sort=new Sort(“bookname”,true) //升序排序 Sort sort=new Sort(new String[]{“bookNumber”,”bookname”,”publishdate”});按照三个Field进行排序,但无法指定升序排序,所以用SortField
1.2. SortField类
public SortField(String field) public SortField(String field,Boolean reverse) public SortField(String field,int type) //type表示当前Field值的类型 public SortField(String field,int type,boolean reverse) //默认为false,升序 Field值的类型:SortField.STRING、SortField.INT、SortField.FLOAT SortField sf1=new SortField(“bookNumber”,SortField.INT,false); SortField sf2=new SortField(“bookname”,SortField.STRING,false);
1.3. 指定排序的法则
1.3.1.按照文档的得分降序排序
Hits hits=searcher.search(query,Sort.RELEVANCE);
1.3.2.按文档的内部ID升序排序
Hits hits=searcher.search(query, Sort.INDEXORDER);
1.3.3.按照一个Field来排序
Sort sort=new Sort(); SortField sf=new SortField(“bookNumber”,SortField.INT,false); sort.setSort(sf); Hits hits=searcher.search(query,sort);
1.3.4.按照多个Field来排序
Sort sort=new Sort(); SortField sf1=new SortField(“bookNumber”,SortField.INT,false);//升序 SortField sf2=new SortField(“publishdate”,SortField.STRING,true);//降序 sort.setSort(new SortField[]{sf1,sf2}); Hits hits=searcher.search(query,sort);
1.3.5.改变SortField中的Locale信息
String str1=”我”; String str2=”你”; Collator co1=Collator.getInstance(Locale.CHINA); Collator co2=Collator.getInstance(Locale.JAPAN); System.out.println(Locale.CHINA+”:”+co1.compare(str1,str2)); System.out.println(Locale.JAPAN+”:”+co2.compare(str1,str2)); 输出结果为: zh_CN:1 ja_JP:-1 所以 public SortField(String field,Locale locale) public SortField(String field,Locale locale,boolean reverse)
2. 过滤器
使用public Hits search(Query query,Filter filter) (1)简单过滤 Hits hits=searcher.search(query,new AdvancedSecurityFilter());//过滤掉securitylevel为0的结果 (2)范围过滤—RangeFilter 只显示中间的 RangeFilter filter=new RangeFilter(“publishdate”,”1970-01-01”,”1998-12-31”,true,true”); Hits hits=searcher.search(query,filter); 无上边界 public static RangeFilter More(String fieldname,String lowerTerm) 无下边界 public static RangeFilter Less(String fieldname,String upperTerm) (3)在结果中查询QueryFilter RangeQuery q=new RangeQuery(new Term(“publicshdate”,”1970-01-01”), new Term(“publishdate”,”1999-01-01”),true); QueryFilter filter=new QueryFilter(q); Hits hits=searcher.search(query,filter);
3. 分析器Analysis
3.1. 自带分析器和过滤器
Ø 标准过滤器:StandardAnalyzer Ø 大小写转换器:LowerCaseFilter Ø 忽略词过滤器:StopFilter public StopFilter(TokenStream input,String [] stopWords) public StopFilter(TokenStream in,String [] stopWords,boolean ignoreCase) public StopFilter(TokenStream input,Set stopWords,boolean ignoreCase) public StopFilter(TokenStream in, Set stopWords) 其中,参数TokenStream代表当前正在进行处理的流;String类型的数组代表一个用数组表示的忽略词集合;Set类型的参数与String一样,是用来表示忽略词集合的;boolean表示当与忽略词集合中的词进行匹配时,是否需要忽略大小写。 Ø 长度过滤器:LengthFilter Ø PerFieldAnalyzerWrapper Ø WhitespaceAnalyzer String str="str1 str2 str3"; StringReader reader=new StringReader(str); Analyzer anlyzer=new WhitespaceAnalyzer(); TokenStream ts=anlyzer.tokenStream("", reader); Token t=null; while( (t=ts.next())!=null ){ System.out.println(t.termText()); }
3.2. 第三方过分析器
Ø 单字分词 Ø 二分法:CJKAnalyzer、中科院ICTCLAS分词、JE分词 Ø 词典分词 3.2.1.JE分词用法 3.2.1.1. 示例 import jeasy.analysis.MMAnalyzer; IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new MMAnalyzer() , true); String str=" Lucene是一个全文检索引擎的架构,"+ "提供了完整的查询引擎和索引引擎。Lucene以其方便使用、快" + "速实施以及灵活性受到广泛的关注。它可以方便地嵌入到各种应用" + "中实现针对应用的全文索引、检索功能,本总结使用lucene--2.3.2。"; MMAnalyzer analyzer=new MMAnalyzer(); try{ System.out.println(analyzer.segment(str, "|")); } catch(Exception e) { e.printStackTrace(); } 输出结果:lucene|一个|全文|检索|引擎|架构|提供|完整|查询|。。。。
3.2.1.2. 设定正向最大匹配的字数
MMAnalyzer analyzer=new MMAnalyzer(4);
3.2.1.3. 添加新词
MMAnalyzer.addWord(String word); MMAnalyzer.addDictionary(Reader reader); MMAnalyzer analyzer=new MMAnalyzer(); MMAnalyzer.addWord("迈克尔雷第");
4. 索引的合并
RAMDirectory RAMDir=new RAMDirectory(); IndexWriter writer = new IndexWriter(RAMDir, new StandardAnalyzer(), true);//删除原有索引 IndexWriter writer2=new IndexWriter(FSDirectory.getDirectory(path,true), new StandardAnalyzer(), true); writer.addDocument(doc1); writer2.addDocument(doc2); writer.close(); writer2.addIndexes(new Directory[]{RAMDir}); writer2.close();注意:在合并前一定要先关闭要加的索引器。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaoping8411/archive/2010/03/24/5413738.aspx
发表评论
-
debug模式启动resin
2011-04-11 14:11 1602只做记录用: http://www.vinceruan.inf ... -
JAVA实现压缩/解压缩zip文件
2011-02-18 12:49 17381.import java.io.BufferedInputS ... -
MD5
2011-01-20 22:15 1346package com.zyg.security.md5; ... -
揭开正则表达式的神秘面纱(1)
2010-12-29 22:43 1071揭开正则表达式的神秘面纱(1) http://blog.cs ... -
Cookie读取与写入 Java
2010-12-29 22:39 4053Cookie读取与写入有两种方法,用程序写和用js写的两种方法 ... -
在Eclipse中导入dtd和xsd文件,使XML自动提示
2010-12-29 22:37 3369DTD 类型约束文件 1. Window->Pr ... -
MD5加密
2010-12-29 22:35 990public class MD5 { public MD5 ... -
动态页面静态化 Java
2010-12-29 22:19 2100import java.io.*; import java.n ... -
lucene整理2 -- 主要的类
2010-12-29 22:13 860http://blog.csdn.net/xiaoping84 ... -
MMAnalyzer极易中文分词组件
2010-12-29 21:46 6224支持英文、数字、中文 ... -
MathContext RoundingMode BigDecimal
2010-12-29 21:41 1202import java.math.BigDecimal; i ... -
分页助手类
2010-12-29 21:37 1328/** * 分页操作助手类 * ... -
数字操作助手类
2010-12-29 21:33 1228public class NumberHelper { ... -
通过JAVA反射机制与DOM4J来实现持久化JAVA对象
2010-11-08 09:55 1155一个接口ReadWriteInt ,一个实现类ReadWrit ... -
java实现断点续传
2010-11-08 09:46 990/** * @{#} MainThre ... -
总结Ext grid中得到选择行的方法
2010-09-07 16:21 1164(1)grid.getStore().getRange(0,s ... -
Tomcat5.5配置-多域名绑定和虚拟目录(转载)
2010-07-05 16:53 860今天帮一个朋友搭建ospo ... -
web.xml配置详细解释(2)
2010-04-15 16:32 1434这里讨论控制servlet和JSP页面的启动行为的方法。特别是 ... -
web.xml的详细配置(1)
2010-04-15 16:31 5271 定义头和根元素 部 ... -
applicationContext.xml
2010-04-07 18:15 767<?xml version="1.0" ...
相关推荐
在使用这些组件时,开发者需要了解Lucene的基本概念,如文档模型、倒排索引、查询解析和过滤器等。同时,对于Je-Analysis,需要理解其分词规则,如何配置和调用分词器,以及如何将其集成到Lucene的索引和搜索流程中...
在2.0.0版中,Lucene对分词器(Analyzer)进行了改进,支持自定义分词规则,以适应不同语言和领域的搜索需求。分词器将文本分解为独立的搜索单元,是影响搜索准确性和效率的关键因素。 除了核心功能,Lucene还提供...
7. **高级功能**:Lucene还包括多线程支持、近实时搜索、自定义排序、过滤器(`Filter`)和拦截器(`Collector`)等高级特性,允许开发者进行更复杂的检索策略设计。 8. **扩展性**:Lucene本身只是一个库,开发者...
它包括文档的创建、索引、查询以及结果的排序和过滤。这个jar包提供了如Analyzer、IndexWriter、Directory、QueryParser等关键类。 2. **lucene-analyzers-common-5.0.0.jar**:这个包包含了Lucene的通用分析器,...
8. **过滤器(Filter)**:允许我们对搜索结果进行进一步的筛选,比如按日期、评分等条件进行排序。 在Lucene 3.0.0中,还有一些值得注意的改进和特性: 1. **性能优化**:这一版本的Lucene对内存使用和搜索速度...
9. **扩展性**:Lucene的API设计允许开发者根据需求进行扩展,比如定制分词器、查询解析器或过滤器。 10. **分布式搜索**:通过Solr或Elasticsearch等项目,Lucene可以扩展到分布式环境,支持大规模数据的搜索需求...
“Ik”的jar包则可能是指“Smart Chinese Analyzer for Lucene”,即ik分词器,这是一个专门针对中文的分词库,适用于Lucene和Solr。Ik分词器能够对中文文本进行有效的分词处理,提高了中文搜索的准确性。`ik-...
- **Analyzer**: 分析器是 Lucene 的关键组件,负责将输入的文本转换为可供搜索的词项(Tokens)。它通常包括词分词、去除停用词、词形还原等预处理步骤。 - **IndexWriter**: 用于创建或更新 Lucene 索引。它可以...
它不仅支持基本的文本搜索,还提供了高级特性,如布尔查询、短语查询、模糊查询以及对查询结果的排序和过滤。由于其高度可定制性和灵活性,Lucene已成为许多大型企业和开源项目的首选搜索解决方案。 二、Lucene ...
- **过滤器(Filter)**:允许对搜索结果进行进一步筛选,如按日期、地理位置等条件。 - **分面搜索(Faceting)**:提供分类统计,便于用户按类别浏览搜索结果。 - **近实时搜索(NRT)**:IndexWriter支持打开...
在`src`目录下的`org.apache.lucene.analysis`包中,包含各种分词器(Tokenizer)和分析器(Analyzer)。分词器将输入文本分解为一个个词汇单元,而分析器则进一步处理这些单元,如去除停用词、词形还原等。例如,`...
对于中文分词,Lucene-2.9.2提供了对多种分词器的支持,如IK分词器、SmartCN分词器等。这些分词器能够将中文文本拆分成有意义的词汇单元,为后续的索引和搜索提供基础。例如,IK分词器以其良好的分词效果和较高的...
Lucene提供了丰富的API,允许开发者添加自定义的查询处理器、过滤器等,实现更多高级功能。 五、总结 Java全文搜索引擎Lucene 3.0.0是一个强大且灵活的工具,不仅适用于大型数据集的搜索,也适用于小型应用的快速...
例如,可以创建自定义的分析器、查询解析器和排序模型。 通过对"lucene-3.6.1-src"的深入研究,开发者不仅可以了解搜索引擎的基本工作流程,还能掌握如何在实际项目中运用这些技术,提升搜索体验。虽然现在Lucene...
3. 词项分析器(Analyzer):Analyzer负责整合分词器、词干提取器和停用词列表,对输入的文本进行预处理,确保索引的准确性和效率。 二、索引构建与查询 1. 索引创建:Document对象用于存储文档信息,Field对象...
Lucene 2.4.0的源码提供了丰富的API接口,开发者可以基于这些接口实现自己的分析器、过滤器、查询解析器等,以适应不同的应用场景。 总之,通过深入学习Lucene 2.4.0的源码,我们可以了解到搜索引擎背后的基本原理...
在这个版本中,用户可以自定义分析器,对输入文本进行分词、去除停用词等预处理操作。倒排索引是Lucene实现高效搜索的关键,它将每个词对应到包含这个词的文档列表。 2. **查询解析**:Lucene支持复杂的查询语法,...
- **Analysis (分析)**:介绍了文本分析的过程,包括分词、过滤器等技术。 - **Advanced search techniques (高级搜索技术)**:探讨了复杂的搜索技巧,如近义词搜索、模糊匹配等。 - **Extending search (扩展...
Lucene包含了索引、搜索、分词、排序、高亮、相关性等功能,使得开发者能够快速构建复杂的搜索引擎。 Lucene的核心在于其索引机制。它将文本数据转化为倒排索引,这是一种优化的存储结构,允许快速查找包含特定词汇...
- **分析器(Analyzer)**:包含分词器、过滤器等,对原始文本进行预处理,以适应特定的语言或搜索需求。 - **文档(Document)**:表示要被索引的信息,可以包含多个字段(Field),如标题、内容、作者等。 - **...