从Lucene 1.4.3升级到2.0实践
来源:互联网 发布:企业网络构架方案 编辑:程序博客网 时间:2024/06/05 03:09
将以前开发的项目中的lucene从1.4.3升级到2.0,发现编译就不通过,于是对照新的API将程序做了修改,目前本人遇到的API更改有
1. IndexReader类
delete(int id)方法改名为deleteDocuemnt(int id), delete(Term t) 方法改名为deleteDocuments(Term t);
getFieldNames()方法现在必须传入参数了,类型是IndexReader.FieldOption,例如
Collection c=reader.getFieldNames(IndexReader.FieldOption.ALL);
2. Field类
构造函数Field(String name,String value,boolean store,boolean index,....)不复存在,变成了更加
Field(String name, String value, Field.Store store, Field.Index index, Field.TermVector termVector)
相应的Field.Keyword静态方法也没有了,必须采用构造函数直接生成实例;
3. BooleanQuery
add方法也改了,原有的是add(Query q, boolean required, boolean prohibited)现在也更加面向对象了:
add(Query q, BooleanClause.Occur occur);
4.BooleanClause
其query属性不是public的了,需要使用getQuery()方法获取;
4. IndexWriter
mergeFactor属性不再是public的了,有了个setMergeFactor()方法;
5. DateField
deprecated了,使用DateTools;
6.QueryParser
parse方法不再是static的了,也就是要先取得QueryParser 的实例再调用实例的parse()方法。这样就可以继承QueryParser 写一个自己的检索式解析器了。我写了一个来解决做模糊检索时出现TooManyClauses 异常的问题。主要是利用Filter的机制来实现。但实际运行过程中只能解决PrefixQuery的问题,即title:comput*样式的检索式没有问题(星号在最后),而在做WildcardQuery时即检索式样式是title:com*er时速度非常慢(数据量4000万),于是只好在新的解析器中只重写了getPrefixQuery()方法。
7. Luke
Luke工具读2.0的索引不太好用了,在其官方网站上还没有支持2.0的版本,于是下了源代码针对2.0的接口重新编译了一下,做了一些修改。可以从这里下载:
- 从Lucene 1.4.3升级到2.0实践
- 从storm0.8.1升级到storm0.9.0.1实践
- 从Lucene到Elasticsearch
- 命令行升级magento从1.4到1.5
- springboot升级从1.3到1.4
- Bugfree升级(从2.0升级到3.0.4)
- 从Lucene 4.10.3到Lucene 7.1.0:带你了解版本之间的些许差异
- 从程序员升级到工程师
- 从程序员升级到工程师
- 从程序员升级到工程师
- 从程序员升级到工程师
- 从程序员升级到工程师
- 从Fedora9升级到Fedora10
- 从sarge升级到etch
- 从Mobile5升级到Moble6
- 从JUnit3升级到JUnit4
- 从JUnit3升级到JUnit4
- 从MOSS2007升级到SharePoint2010
- 第3章 WEB窗体
- 设计模式之Mediator中介者模式
- 享受实况,品味生活
- Bowling Scores
- 让工资涨的快的小技巧
- 从Lucene 1.4.3升级到2.0实践
- SafeSignCertReg.exe导致系统工作异常
- 设计模式与泡mm的关系之Mediator中介者模式及再思考
- 关于String中length()方法注意的问题
- 迷茫的我......
- window系统下的堆栈溢出
- 什么叫Web2.0
- Struts+Hibernate显示主从表数据
- 面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序