<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    青菜貓(孫宇博客),青菜貓(孫宇博客),青菜貓(孫宇博客)http://www.javasdc.cn/
    posts - 29,  comments - 63,  trackbacks - 0
        大家都知道用lucene2.2.0全文檢索速度很快,但是當并發(fā)量的大的時候,lucene也會吃不消的,所以我們可以用到緩存,我給大家介紹的是oscache-2.4.1,先到官方網(wǎng)站下載一個.,然后把oscache-2.4.1.jar導(dǎo)入你的工程中.然后在下載解壓后的文件里有個重要的文件,那就是oscache.properties,oscache.tld文件,oscache.properties是對oscache的配置,這兩個文件放在classes文件下.,打開oscache.properties文件,里面可以自己進行相關(guān)配置.
       先介紹用硬盤緩存.
            1.打開oscache.properties文件. 改成,cache.memory=false(表示硬盤緩存.true表示內(nèi)存緩存),然后是路徑,cache.path=/home/search/index/cache(我這個不是win下)然后cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
     cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.HashDiskPersistenceListener選一個,第一會當緩存數(shù)據(jù)在硬盤后,會產(chǎn)品一個文件夾.第二是存數(shù)據(jù)在硬盤后,會產(chǎn)生分步的件夾,不會像第一種那樣把緩存數(shù)據(jù)放在一個文件夾里.
    2.寫方法進行緩存.
    1.寫個類extends GeneralCacheAdministrator,
      

    public class BaseCache extends GeneralCacheAdministrator {
    // 過期時間(單位為秒);
     private int refreshPeriod;
     

     public BaseCache(int refreshPeriod){
        super();
        this.refreshPeriod=refreshPeriod;
     }
    // 添加被緩存的對象;
     public void put(String key,Object value){
        this.putInCache(key,value);
     }
    // 刪除被緩存的對象;
     public void remove(String key){
        this.flushEntry(key);
     }
    // 刪除所有被緩存的對象;
     public void removeAll(Date date){
        this.flushAll(date);
     }

     public void removeAll(){
        this.flushAll();
       
     }
    // 獲取被緩存的對象;
     public Object get(String key) throws Exception{
        try{
         return this.getFromCache(key,this.refreshPeriod);
        } catch (NeedsRefreshException e) {
         this.cancelUpdate(key);
              throw e;
        }
       }
    }
    2.執(zhí)行方法:
    在方法里,indexCache = new BaseCache(3600),hii = new cache.Hits(hits),這個類是自己寫的,下面的詳細代碼,然后調(diào)用put(String key,Object value)方法,key是關(guān)鍵字.下次取的時候就直接get(key),key我是用的查詢參數(shù)組成的,只要下次當別人用到相同條件搜索時,就可以直接從緩存讀數(shù)據(jù),這里所提到的是org.apache.lucene.search.Hits這個對像是不能被緩存的,沒有被序例化,我查了下源碼,也不能被繼承,所以大家自己寫個類implements Serializable

    public class Hits implements Serializable   {
      private  org.apache.lucene.search.Hits hits;
      private  Document[] docs=null;
      private boolean flag=true;
     
     /**
      * sundc 2007-11-20
      */
     public Hits(org.apache.lucene.search.Hits hits) {
      this.docs=new Document[hits.length()];
      int length=0;
    //我這里是定義記錄有只緩存前710多記錄,如果大于710還是查lucene,大家都知道搜索用戶訪問都是幾頁,大家可以針對自己項目進行規(guī)化..
    if(hits.length()>=710){
       length=710;
      }
      else{
       length=hits.length(); 
      }
       for(int i=0;i<length;i++){
       try {
        this.docs[i]=hits.doc(i);
       } catch (CorruptIndexException e) {
        e.printStackTrace();
       } catch (IOException e) {
        e.printStackTrace();
       }
      }
     }

     
     public Hits( Document[] doc){
      this.docs=doc;
     }
     public  Document doc(int i){
      if(!this.flag){
       try {
        return this.hits.doc(i);
       } catch (CorruptIndexException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
       
      }
      return this.docs[i];
     }

     public  int length(){
      if(this.flag){
       return  docs.length;
      }
      return this.hits.length();
     }
     
     public  Document[] getDocs() {
      return this.docs;
     }

     public  void setDocs(Document[] docs) {
      this.docs = docs;
     }

     public org.apache.lucene.search.Hits getHits() {
      return this.hits;
     }

     public void setHits(org.apache.lucene.search.Hits hits) {
      this.hits = hits;
     }
    }
    我這里是如果有緩存數(shù)據(jù),就讀緩存,沒有,就lucene然后放在緩存里.大家可以調(diào)用indexCache.get(key),大家每一次訪問的時候會相對很慢.如果緩存已經(jīng)建立了,那么速度會很快,大家在用的時候,針對自己項目的數(shù)據(jù)要求,進行緩存.下面介紹內(nèi)存緩存.
      2.內(nèi)存緩存可以相對要快點.但是針對服務(wù)器的本身內(nèi)存大小,大家針對自己的項目和服務(wù)器的配置選擇好的緩存方式.,把cache.memory=true,這樣就可以了.
    3.還可以實現(xiàn)頁面級緩存
    你可以在web.xml中定義緩存過濾器,定義特定資源的緩存。
    <filter>
    <filter-name>CacheFilter</filter-name>
    <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
    <init-param>
    <param-name>time</param-name>
    <param-value>60</param-value>
    </init-param>
    <init-param>
    <param-name>scope</param-name>
    <param-value>session</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>CacheFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    上面定義將緩存所有.jsp頁面,緩存刷新時間為60秒,緩存作用域為Session,
    注意,CacheFilter只捕獲Http頭為200的頁面請求,即只對無錯誤請求作緩存,
    而不對其他請求(如500,404,400)作緩存處理.
    我這里介紹的不全,只是我在項目中用到了這些.如果有什么問題,虛心接受....
                                                                                                                                                                                                          

                                                                                                                                                                                        青菜貓(孫宇)
    posted on 2007-12-08 21:36 青菜貓(孫宇) 閱讀(1635) 評論(2)  編輯  收藏 所屬分類: java


    FeedBack:
    # re: 用oscache+lucene2.2.0加快頁面訪問速度
    2008-10-21 11:27 | lucene
    能把你的調(diào)用類一起發(fā)上來看看嗎?  回復(fù)  更多評論
      
    # re: 用oscache+lucene2.2.0加快頁面訪問速度
    2008-10-21 11:28 | lucene
    我最近怎在lucene緩存方面,謝謝你的文章!!!  回復(fù)  更多評論
      
    <2007年12月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    青菜貓(孫宇)結(jié)交天下朋友,在網(wǎng)上吸取知識..

    常用鏈接

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    青菜貓(孫宇博客),青菜貓(孫宇博客),青菜貓(孫宇博客)http://www.javasdc.cn/
    主站蜘蛛池模板: 成年人免费网站在线观看| 久久亚洲精品AB无码播放| 亚洲Av无码一区二区二三区| 日韩精品人妻系列无码专区免费 | 中文日韩亚洲欧美制服| 四虎在线最新永久免费| 亚洲人成高清在线播放| 久久不见久久见免费影院| 亚洲国产日韩精品| 国产福利免费观看| 一级做a爱过程免费视频高清| 亚洲精品国产精品国自产观看| 精品人妻系列无码人妻免费视频 | 亚洲欧洲精品视频在线观看| 91成人免费观看网站| 国产成人亚洲综合网站不卡| 日韩电影免费在线| 一级做a免费视频观看网站| 国产国拍亚洲精品mv在线观看 | 久久aⅴ免费观看| 亚洲欧洲国产综合| 国产精品国产午夜免费福利看| 一级毛片a女人刺激视频免费| 亚洲大尺度无码专区尤物| 国产无人区码卡二卡三卡免费| 亚洲成在人线aⅴ免费毛片| 亚洲欧洲日产国码一级毛片| 久久国产精品一区免费下载| 久久久久久亚洲精品影院| 亚洲人成无码网WWW| 91av视频免费在线观看| 亚洲av成人一区二区三区观看在线| 亚洲电影日韩精品| 日韩午夜理论免费TV影院| 亚洲AV一区二区三区四区| 国产精品亚洲аv无码播放| 免费在线看v网址| AAAAA级少妇高潮大片免费看 | 老司机福利在线免费观看| 亚洲高清国产拍精品26U| 岛国av无码免费无禁网站|