何以解憂?唯有Java

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

          使用Lucene 對JTable進行搜索

          Posted on 2009-10-19 15:52 guanminglin@gmail.com 閱讀(29226) 評論(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 我照著代碼寫,也不行,無解!
          主站蜘蛛池模板: 安乡县| 甘德县| 青河县| 天门市| 兴和县| 潮安县| 旅游| 阿巴嘎旗| 南雄市| 朔州市| 武义县| 青岛市| 临沂市| 龙井市| 团风县| 安徽省| 彩票| 屯昌县| 定陶县| 明水县| 谢通门县| 武宣县| 南平市| 通州区| 从化市| 轮台县| 谢通门县| 伊春市| 古田县| 蒙自县| 车险| 土默特左旗| 江永县| 贵阳市| 绥阳县| 楚雄市| 纳雍县| 西峡县| 修文县| 临湘市| 巴中市|