设为首页收藏本站language 语言切换
查看: 3233|回复: 0
收起左侧

Java进阶:使用Lucene 对JTable进行搜索

[复制链接]
发表于 2010-2-20 15:09:11 | 显示全部楼层 |阅读模式
<p >经常会遇到一个表格中有许多的数据,想要找到一条符合自己要求的数据会比较麻烦,需要一条一条的找。数据量小还好,但是如果有几百条上千条的数据找起来就比较麻烦了。Lucene 提供了一个拓展包 lucene-swing,可以很方便的对JTable进行搜索。<p ><p >下面介绍一下拓展包,以及如何使用这个拓展包:<p ><p >Lucene-swing 并不在Lucene的核心包中而是以拓展包的形式存在,所以你可以在下载的Lucene包中找到它。请看下面的截图:<p ><p ><center><img  src="http://www.hh010.com/upload_files/article/243/9_3cjhge1937227.jpg"></center><p ><p >在这个包中提供了两种搜索形式:TableSearcher 和 ListSearcher<p ><p >顾名思义 就是提供对JTable 和JList 进行搜索的功能。<p ><p >一、表格搜索功能<p ><p >1、org.appche.lucene.swing.models.TableSearcher<p ><p >要想对表格进行搜索,先要对表格的模型进行包装,在Swing的MVC模型中model中存在数据,操作表格中的数据基本上都是操作Model中的数据。Lucene -swing对表格模型进行了包装,所以可以很好的对JTable进行搜索。<p ><p >一般使用Lucene-swing的步骤是:<p ><p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>JTable table = new Jtable(); //先建立一个表格对象MytableModel model = new MytableModel(); //再新建一个表格模型//下面就是包装原有的表格模型了//其实TableSearcher 也是一个表格模型,只是对原有的表格模型进行了包装TableSearcher searcher = new TableSearcher(model);table.setModel(searcher);</ccid_code></pre></td></tr></table></ccid_nobr><br><p ><p >接着就可以在的搜索按钮或者JTextField的键盘监听事件中调用搜索方法了<p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>searcher.search(keywords)</ccid_code></pre></td></tr></table></ccid_nobr><br><p ><p >一般情况下都会将这个方法封装:<p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>public void tableSearch() {String keywords = keyWordTF.getText().toLowerCase();searcher.search(keywords); //搜索表格并返回结果}</ccid_code></pre></td></tr></table></ccid_nobr><br><p ><p >下面是我写的一个例子的截图:<p ><p >初始化界面:<p ><center><img  src="http://www.hh010.com/upload_files/article/243/9_7cpvqi1937229.jpg"></center><p ><p >搜索结果界面:<p ><center><img  src="http://www.hh010.com/upload_files/article/243/9_ezfpyq1937231.jpg"></center><p ><p >如果你细心的话,你会发现上面的搜索都是英文的,那它能搜索中文吗?答案是肯定的,不过你要提供中文分词器。在TableSearcher 类中提供了一个设置分词器的方法:<p ><p ><center><img  src="http://www.hh010.com/upload_files/article/243/9_h6xjvs1937233.jpg"></center><p ><p >中文分词器,我这里使用的是JE 分词,jeasy.analysis.MMAnalyzer。<p ><p >所以你可以这样调用:searcher.setAnalyzer(new MMMnalyzer());<p ><p >接下来就来检验一下是否可以对中文进行搜索了。<p ><p >现改变一些模型数据,改完后的界面:<p ><p ><center><img  src="http://www.hh010.com/upload_files/article/243/9_zlxylb1937235.jpg"></center><p ><p >可以看到有两条有中文的数据,现在看看效果如何:<p ><p ><center><img  src="http://www.hh010.com/upload_files/article/243/9_j9euyt1937237.jpg"></center><p ><p >可以看到已经可以搜索中文了。<p ><p >< align=right></P><p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 07:15 , Processed in 1.289616 second(s), 22 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表