Lucene中的TooManyClause异常

为什么会产生这个异常

使用Lucene检索过程中如果用到RangeQuery,PrefixQuery,WildcardQuery,FuzzyQuery这四种Query,可能会产生TooManyClauses异常。为什么会产生这个异常呢?举例说明:

以RangeQuery为例,如果日期范围为19990101到20091231,在索引文件中有19990102,19990103等等这些日期词组,那么RangeQuery会被扩展成“19990102 OR 19990103”,成了2个子句。可以想象,如果索引文件里面在这个时间段内的日期有很多,那么就会产生很多子句。
Continue reading

maven中文教程——一个简单的应用实例

我突然有个想法,我们使用hibernate search来构建一个全文检索(本文的内容不会重点放在hibernate search,对此感兴趣可以下载本文的代码)。假设我们的数据库中有一些数码相机的数据,对于这些数据的维护采用hibernate,这样我们可以使用hibernate search架设一个全文检索系统,以提供更好的产品检索服务。

心动不如行动,马上动手吧。
Continue reading

maven中文教程——坐标与包依赖管理

maven用“坐标(Coordinate)”这个词来唯一标识一个库文件,所谓“坐标”就是库文件的“主键”(借用一下数据库的概念),而且这个“主键”是个复合组件,包含四个部分:groupId, artifactId, version和packaging,分别对应pom文件中的下面四个结点:

<groupId>com.zhlwish</groupId>   项目开发组织标识
<artifactId>simple</artifactId>  项目标识(一般是项目名称)
<packaging>jar</packaging>       打包类型(可能是jar、war、ear)
<version>1.0-SNAPSHOT</version>  版本(按照apache版本命名规则来命名,一般为“主版本.次版本.增量版本-限定版本号”)

Continue reading

maven中文教程——构建的生命周期

maven的支持者在提及maven的优点的时候总会提到这么一点,那就是maven是有生命周期的,而ant没有,你需要手工的编写target,然后编写每个target中的任务。

其实在我看来这个是纠缠概念,所谓的maven生命周期实际上是构建过程的生命周期。在ant中你需要手动的设定文件夹的结果,告诉ant哪个是源代码文件夹、哪个是测试代码文件夹,哪个是目标文件夹等等,因此对于使用ant每个项目都有不一样的代码。因为maven已经将项目的文件夹结构固定好了,不用程序员再指定,所以就可以将编译、打包、部署等这样一些过程都可以做成自动化的,也就是所谓的maven的生命周期。
Continue reading