最新版的lucene轻松支持中文,能够轻松排序
下载最新的lucene-1.4-final-src.tar.gz,解开里面有docs,lib,src等目录,lib下有编译原码需要的junit-3.8.1.jar,我们可以使用ant1.6来build,也可以选择用eclipse来build。
在src有demo包,查看docs目录的文档得知IndexFiles 和SearchFiles这两个类分别是用来build文本index,和进行search query的。
IndexFiles需要传进的参数:被build index的目录的绝对路径(该目录内所有文件将会被遍历build index)。SearchFiles不需要传任何参数便可直接运行,运行时会提示您输入需要查询的东西Query:。build生成的index文件默认会在src的index目录下。
Demo包里这两个只是很简单的demo,里面还有一个经典的demo,就是IndexHtml,该类比较复杂,感兴趣的朋友可以仔细研究。下面要讲到如何排序。
在google里面搜索lucene,几乎都会找到车东同学的关于lucene中文处理的大作,而且也都有提到一个叫CJKAnalyzer(chinese,Japanese,Korea)的类,这个Analyzer就是用来分析像中文,日文,韩文这种两个字节的字符的,这个解决方案后来也被jakarta项目收录在lucene中,嘿嘿这样车东同学可出名了。
很疑惑的是当前我们下载的原码里面根本找不见前面说的CJKAnalyzer这个东东,不管怎么样,带着疑惑到lucene官方网站上找找资料,查看changes.txt,太长,看看1.3~1.4版这一段时期的升级情况吧,仔细查看,居然发现1.4版已经默认就可以支持中文了(在changes.txt快速查找CTRL+F 输入chinese即可快速定位到该行说明)。再看看,发现可以随意排序?但是让自己去看Search#search的javadoc,看过javadoc,小小实验一把,果真如此!!还可以通过多个index来排序,所有排序功能只能应用到没有存储内容的index上。
排序:需要 Sort sort = new Sort("username", true);
懒得写了,具体自己看Search的文档吧
注:lucene应用起来相当简单方便,已经有人将它移植到.net上,通过阅读该文希望大家都能快速上手lucene,可以把自己收藏的文档build起来,然后方便查阅,也是很爽的