对于Lucence搜索技术,早前几个月就已经接触过了,也看了不少资料,这周才用上这个了不起的搜索技术,做出来的效果更Google差不多,不过技术肯定没人家的好,主要是数据量不大,很适用,发两张效果图看看:
[img]http://lym6520.iteye.com/upload/attachment/84065/132e4c7a-0648-34dc-bb49-d0c66ba163c6.gif[/img]
[img]http://lym6520.iteye.com/upload/attachment/84067/4f3fbfaf-05a3-33ed-ba15-1735f09afb79.gif[/img]
其实效果是达到了,不过性能还待优化,自然速度不会比Google的差,当然最主要的原因是我们数据量小。
呵,现在谈谈创建索引、增加索引、修改索引、删除索引时要注意的一些细节吧!
创建索引的时候我们要先声明一个IndexWriter对象,这时要注意了,实例化一个IndexWriter的时候需要三个参数,第一参数是索引存放的目录,第二个参数是解析器类型,最主要的是第三个参数create是布尔型的,当创建新索引时应当是true,当我们要修改、删除、添加索引时,应当要设成false,否则当你搜索的时候会出现“nDocs must be > 0”的错误,索引在对索引进行增、删、改的时候要特别小心。
现在说说怎么实现类似Google搜索效果吧!
要实现这样的效果,首先我们需要一个表来保存用户输入的关键字,通过累积,当用户输入“abb”时,若数据库已经储存了这类关键字,就找出前十条记录,然后到索引里查找结果,匹配的记录总数,然后返回。当然这要利用ajax技术咯!我们还做了缓存的处理,对于用户输入过的关键字不进行重复搜索,这减少了通信的次数,自然是提高了性能。
[img]http://lym6520.iteye.com/upload/attachment/84065/132e4c7a-0648-34dc-bb49-d0c66ba163c6.gif[/img]
[img]http://lym6520.iteye.com/upload/attachment/84067/4f3fbfaf-05a3-33ed-ba15-1735f09afb79.gif[/img]
其实效果是达到了,不过性能还待优化,自然速度不会比Google的差,当然最主要的原因是我们数据量小。
呵,现在谈谈创建索引、增加索引、修改索引、删除索引时要注意的一些细节吧!
创建索引的时候我们要先声明一个IndexWriter对象,这时要注意了,实例化一个IndexWriter的时候需要三个参数,第一参数是索引存放的目录,第二个参数是解析器类型,最主要的是第三个参数create是布尔型的,当创建新索引时应当是true,当我们要修改、删除、添加索引时,应当要设成false,否则当你搜索的时候会出现“nDocs must be > 0”的错误,索引在对索引进行增、删、改的时候要特别小心。
IndexWriter writer = new IndexWriter(dir, getAnalyzer(),create);
现在说说怎么实现类似Google搜索效果吧!
要实现这样的效果,首先我们需要一个表来保存用户输入的关键字,通过累积,当用户输入“abb”时,若数据库已经储存了这类关键字,就找出前十条记录,然后到索引里查找结果,匹配的记录总数,然后返回。当然这要利用ajax技术咯!我们还做了缓存的处理,对于用户输入过的关键字不进行重复搜索,这减少了通信的次数,自然是提高了性能。