何以解忧?唯有Java

其实程序员也懂得浪漫!
posts - 90, comments - 637, trackbacks - 0, articles - 2
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

使用Lucene 对JTable进行搜索

Posted on 2009-10-19 15:52 guanminglin@gmail.com 阅读(29200) 评论(11)  编辑  收藏 所属分类: JavaSENetBeans

     经常会遇到一个表格中有许多的数据,想要找到一条符合自己要求的数据会比较麻烦,需要一条一条的找。数据量小还好,但是如果有几百条上千条的数据找起来就比较麻烦了。Lucene 提供了一个拓展包 lucene-swing,可以很方便的对JTable进行搜索。

下面介绍一下拓展包,以及如何使用这个拓展包:

 Lucene-swing 并不在Lucene的核心包中而是以拓展包的形式存在,所以你可以在下载的Lucene包中找到它。请看下面的截图:

在这个包中提供了两种搜索形式:TableSearcher ListSearcher

顾名思义 就是提供对JTable JList 进行搜索的功能。

一、表格搜索功能

1org.appche.lucene.swing.models.TableSearcher

要想对表格进行搜索,先要对表格的模型进行包装,在SwingMVC模型中model中存在数据,操作表格中的数据基本上都是操作Model中的数据。Lucene -swing对表格模型进行了包装,所以可以很好的对JTable进行搜索。

一般使用Lucene-swing的步骤是:


JTable table = new Jtable(); //先建立一个表格对象

MytableModel model 
= new MytableModel(); //再新建一个表格模型

//下面就是包装原有的表格模型了

//其实TableSearcher 也是一个表格模型,只是对原有的表格模型进行了包装

TableSearcher searcher 
= new TableSearcher(model);

table.setModel(searcher);

接着就可以在的搜索按钮或者JTextField的键盘监听事件中调用搜索方法了
searcher.search(keywords)

一般情况下都会将这个方法封装:

public void tableSearch() {

String keywords 
= keyWordTF.getText().toLowerCase();

searcher.search(keywords); 
//搜索表格并返回结果

}

下面是我写的一个例子的截图:

初始化界面:

 

搜索结果界面:

 


如果你细心的话,你会发现上面的搜索都是英文的,那它能搜索中文吗?答案是肯定的,不过你要提供中文分词器。在TableSearcher 类中提供了一个设置分词器的方法:

 


 

中文分词器,我这里使用的是JE 分词,jeasy.analysis.MMAnalyzer

所以你可以这样调用:searcher.setAnalyzer(new MMMnalyzer());


接下来就来检验一下是否可以对中文进行搜索了。

现改变一些模型数据,改完后的界面:


可以看到有两条有中文的数据,现在看看效果如何:



可以看到已经可以搜索中文了。


 


评论

# re: 使用Lucene 对JTable进行搜索  回复  更多评论   

2009-10-19 17:49 by 凡客诚品网
受教了~谢谢楼主

# re: 使用Lucene 对JTable进行搜索[未登录]  回复  更多评论   

2009-10-19 18:22 by 小毅
其实实质就是利用tablemodel动态改变JTABLE的内容

# re: 使用Lucene 对JTable进行搜索  回复  更多评论   

2009-10-20 03:17 by 美容
使用Lucene good

# re: 使用Lucene 对JTable进行搜索  回复  更多评论   

2009-10-22 11:17 by zhonghuazc
还正想自己整一个全文索引的工具呢,没有想到lucene有了,爽

# re: 使用Lucene 对JTable进行搜索[未登录]  回复  更多评论   

2009-10-26 10:36 by sky
非常好,谢谢!

# re: 使用Lucene 对JTable进行搜索  回复  更多评论   

2009-12-25 21:39 by java_love
楼主可以将这个例子的详细发一下么?我照着试一下不行呢?

# re: 使用Lucene 对JTable进行搜索  回复  更多评论   

2009-12-25 22:08 by java_love
如果楼主有空闲的话,是否可以将源码发给我lbyzmy5@gmail.com

# re: 使用Lucene 对JTable进行搜索  回复  更多评论   

2011-09-29 09:15 by tb
好用

# re: 使用Lucene 对JTable进行搜索  回复  更多评论   

2011-10-25 08:42 by tb
这个好用............

# re: 使用Lucene 对JTable进行搜索  回复  更多评论   

2014-04-24 05:07 by im404
能不能把你这个jar包发给我呢?Email:im404@qq.com

# re: 使用Lucene 对JTable进行搜索[未登录]  回复  更多评论   

2014-10-10 16:45 by amy
求源码?asdff_px@126.com 我照着代码写,也不行,无解!

只有注册用户登录后才能发表评论。


网站导航: