何以解憂?唯有Java

          其實(shí)程序員也懂得浪漫!
          posts - 90, comments - 637, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

               經(jīng)常會(huì)遇到一個(gè)表格中有許多的數(shù)據(jù),想要找到一條符合自己要求的數(shù)據(jù)會(huì)比較麻煩,需要一條一條的找。數(shù)據(jù)量小還好,但是如果有幾百條上千條的數(shù)據(jù)找起來就比較麻煩了。Lucene 提供了一個(gè)拓展包 lucene-swing,可以很方便的對(duì)JTable進(jìn)行搜索。

          下面介紹一下拓展包,以及如何使用這個(gè)拓展包:

           Lucene-swing 并不在Lucene的核心包中而是以拓展包的形式存在,所以你可以在下載的Lucene包中找到它。請(qǐng)看下面的截圖:

          在這個(gè)包中提供了兩種搜索形式:TableSearcher ListSearcher

          顧名思義 就是提供對(duì)JTable JList 進(jìn)行搜索的功能。

          一、表格搜索功能

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

          要想對(duì)表格進(jìn)行搜索,先要對(duì)表格的模型進(jìn)行包裝,在SwingMVC模型中model中存在數(shù)據(jù),操作表格中的數(shù)據(jù)基本上都是操作Model中的數(shù)據(jù)。Lucene -swing對(duì)表格模型進(jìn)行了包裝,所以可以很好的對(duì)JTable進(jìn)行搜索。

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


          JTable table = new Jtable(); //先建立一個(gè)表格對(duì)象

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

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

          //其實(shí)TableSearcher 也是一個(gè)表格模型,只是對(duì)原有的表格模型進(jìn)行了包裝

          TableSearcher searcher 
          = new TableSearcher(model);

          table.setModel(searcher);

          接著就可以在的搜索按鈕或者JTextField的鍵盤監(jiān)聽事件中調(diào)用搜索方法了
          searcher.search(keywords)

          一般情況下都會(huì)將這個(gè)方法封裝:

          public void tableSearch() {

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

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

          }

          下面是我寫的一個(gè)例子的截圖:

          初始化界面:

           

          搜索結(jié)果界面:

           


          如果你細(xì)心的話,你會(huì)發(fā)現(xiàn)上面的搜索都是英文的,那它能搜索中文嗎?答案是肯定的,不過你要提供中文分詞器。在TableSearcher 類中提供了一個(gè)設(shè)置分詞器的方法:

           


           

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

          所以你可以這樣調(diào)用:searcher.setAnalyzer(new MMMnalyzer());


          接下來就來檢驗(yàn)一下是否可以對(duì)中文進(jìn)行搜索了。

          現(xiàn)改變一些模型數(shù)據(jù),改完后的界面:


          可以看到有兩條有中文的數(shù)據(jù),現(xiàn)在看看效果如何:



          可以看到已經(jīng)可以搜索中文了。


           


          評(píng)論

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索  回復(fù)  更多評(píng)論   

          2009-10-19 17:49 by 凡客誠品網(wǎng)
          受教了~謝謝樓主

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索[未登錄]  回復(fù)  更多評(píng)論   

          2009-10-19 18:22 by 小毅
          其實(shí)實(shí)質(zhì)就是利用tablemodel動(dòng)態(tài)改變JTABLE的內(nèi)容

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索  回復(fù)  更多評(píng)論   

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

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索  回復(fù)  更多評(píng)論   

          2009-10-22 11:17 by zhonghuazc
          還正想自己整一個(gè)全文索引的工具呢,沒有想到lucene有了,爽

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索[未登錄]  回復(fù)  更多評(píng)論   

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

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索  回復(fù)  更多評(píng)論   

          2009-12-25 21:39 by java_love
          樓主可以將這個(gè)例子的詳細(xì)發(fā)一下么?我照著試一下不行呢?

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索  回復(fù)  更多評(píng)論   

          2009-12-25 22:08 by java_love
          如果樓主有空閑的話,是否可以將源碼發(fā)給我lbyzmy5@gmail.com

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索  回復(fù)  更多評(píng)論   

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

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索  回復(fù)  更多評(píng)論   

          2011-10-25 08:42 by tb
          這個(gè)好用............

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索  回復(fù)  更多評(píng)論   

          2014-04-24 05:07 by im404
          能不能把你這個(gè)jar包發(fā)給我呢?Email:im404@qq.com

          # re: 使用Lucene 對(duì)JTable進(jìn)行搜索[未登錄]  回復(fù)  更多評(píng)論   

          2014-10-10 16:45 by amy
          求源碼?asdff_px@126.com 我照著代碼寫,也不行,無解!
          主站蜘蛛池模板: 章丘市| 兴和县| 万载县| 搜索| 乡城县| 汝城县| 安徽省| 邯郸县| 琼结县| 太仆寺旗| 龙游县| 曲松县| 深州市| 邹平县| 湘潭县| 旬邑县| 临城县| 平舆县| 南丰县| 永州市| 垦利县| 扶余县| 阿拉善右旗| 衡山县| 古蔺县| 常宁市| 宁国市| 临西县| 富蕴县| 榕江县| 龙口市| 繁峙县| 民乐县| 呈贡县| 晋江市| 理塘县| 乌拉特后旗| 宣威市| 霍林郭勒市| 紫阳县| 平定县|