<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,

    最近要做一個(gè)站內(nèi)的全文檢索功能,下面把實(shí)現(xiàn)的代碼貼出來(lái),實(shí)現(xiàn)了索引的創(chuàng)建、檢索和刪除功能,并可以從檢索結(jié)果去查詢數(shù)據(jù)庫(kù)~ .我主要是我系統(tǒng)的700W數(shù)據(jù)進(jìn)行檢索.下面主要是供應(yīng)信息做為例子,(如有問(wèn)題,多多評(píng)論,虛心接受).

     // 創(chuàng)建索引

    IndexWriter writer;
       String indexDir = "d:""index/sellindex";
       boolean indexExist = indexExist(indexDir);
       if (indexExist) {
        writer = new IndexWriter(indexDir, new StandardAnalyzer(),
          false);
       } else {

        writer = new IndexWriter(indexDir, new StandardAnalyzer(), true);
       }
    re為數(shù)據(jù)記錄集,這里就不介紹了.
    while (re.next()) {
    //Field.Store.YES表示是不是被保存,
    //Field.Index.no表示是不是被索引.
    doc.add(new Field("vcsid", re.getString("vcsid"),
          Field.Store.YES, Field.Index.no));
    //vcareacode是我的地區(qū)編號(hào),因?yàn)槲宜阉饕鳛闂l件搜索.
     doc.add(new Field("vcareacode", re.getString("vcareacode"),
           Field.Store.YES, Field.Index.TOKENIZED));
    //這里isort后面排序用的
    doc.add(new Field("isort", re.getString("isort"),
           Field.Store.YES, Field.Index.TOKENIZED));
    //clcontent是我的內(nèi)容,因?yàn)槲宜阉饕鳛闂l件搜索.
    doc.add(new Field("clcontent", re.getString("clcontent"),
           Field.Store.YES, Field.Index.TOKENIZED));
    writer.addDocument(doc);
    }
    如果記錄較多時(shí),就循環(huán)添加
    最后
    writer.close();
    判斷索引存在方法
    public static boolean indexExist(String indexDir) {
      return IndexReader.indexExists(indexDir);
     }
    這樣就在索引就建好了.

     // 索引搜索的實(shí)現(xiàn)(我這里已搜索內(nèi)容和地區(qū))

     IndexSearcher indexSearcher;
    ndexSearcher = new IndexSearcher("d:""index/sellindex");
       Document doc = null;
       org.apache.lucene.search.BooleanQuery  bquery=new org.apache.lucene.search.BooleanQuery();
    //我這里clcontent作為關(guān)鍵字來(lái)搜索
       QueryParser qa=new QueryParser("clcontent",new StandardAnalyzer());
       Query query=qa.parse(keyword);
    //這里指定條件都滿足搜索
       bquery.add(query,org.apache.lucene.search.BooleanClause.Occur.MUST);
    //   vcareacode作為條件來(lái)查詢,如果為NULL和 AA時(shí)表示查找所有的
       if(request.getParameter("vcareacode")!=null){
        if(!request.getParameter("vcareacode").toString().equals("aa")){      
           qa=new QueryParser("vcareacode",new StandardAnalyzer());
          query=qa.parse(request.getParameter("vcareacode")+"*");
          bquery.add(query,org.apache.lucene.search.BooleanClause.Occur.MUST);
          vcareacode=request.getParameter("vcareacode");
         }
      }"
    //這里加的是高亮結(jié)果顯示
     Highlighter highlighter = new Highlighter(new SimpleHTMLFormatter("<font color=red><B>","</B></font>"),new QueryScorer(bquery));
        highlighter.setTextFragmenter(new SimpleFragmenter(80));
     org.apache.lucene.document.Document dc=null;
     Hits hits = indexSearcher.search(bquery,new Sort(new SortField("isort",true)));
      org.apache.lucene.analysis.standard.StandardAnalyzer analyzer = new org.apache.lucene.analysis.standard.StandardAnalyzer();
    //這里hits.length()可以得到有多少記錄.,I表示第幾條記錄
     dc = hits .doc(i);
    //高亮顯示類容
      org.apache.lucene.analysis.TokenStream  tokenStream = analyzer.tokenStream("clcontent", new java.io.StringReader(dc.get("clcontent")));
    System.out.pritf(highlighter.getBestFragment(tokenStream,li.doc(i).get("clcontent")))  ;
    dc.get("vcareacode")顯示類別
    這樣就可以從建索引,到搜索.(有問(wèn)題,發(fā)表下評(píng)論,我會(huì)回的)這只是簡(jiǎn)單的,我也在苦研中,要睡了,還要上班,有時(shí)間會(huì)寫下更新索引,增加,刪除,修改,還有一些優(yōu)化方法..
                                                                                                                                                                                   青菜貓(孫宇)

    posted on 2007-10-22 23:33 青菜貓(孫宇) 閱讀(1522) 評(píng)論(11)  編輯  收藏 所屬分類: 搜索


    FeedBack:
    # re: 青菜貓lucene2.2.0全文檢索
    2007-10-25 08:53 | 阿蜜果
    lucene我列入學(xué)習(xí)計(jì)劃已經(jīng)很久,但一直沒(méi)有開(kāi)始動(dòng)手學(xué)習(xí),關(guān)注你的這個(gè)系列  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索
    2007-10-25 09:04 | sundc
    阿蜜果姐姐都來(lái)了....呵呵...  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索
    2007-10-25 14:16 | 五街
    寫的很好啊,你是杭州的嗎
    看到你的代碼,跟我們公司在用的好像  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索[未登錄](méi)
    2007-11-01 11:50 | lk
    不錯(cuò)  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索
    2007-11-02 15:33 | why
    為什么高亮顯示的時(shí)候看不到效果,:
    比如我找"人生".出現(xiàn)如下:

    <font color="red"><b>人</b></font><font color="red"><b>生</b></font>自古誰(shuí)無(wú)死,留取丹心照汗青

    我在JSP中顯示的也是和這個(gè)一樣的.沒(méi)有看到有紅色加粗的效果,這是為什么,能
    把原因發(fā)到我郵箱嗎. jiangguoyu2006@163.com 不勝感激  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索
    2007-11-03 16:04 | sundc
    @why
    在顯示的時(shí)候你CODE加了org.apache.lucene.analysis.standard.StandardAnalyzer analyzer = new org.apache.lucene.analysis.standard.StandardAnalyzer();
    org.apache.lucene.analysis.TokenStream tokenStream = analyzer.tokenStream("你的字段", new java.io.StringReader(dc.get("你的字段")));
    highlighter.getBestFragment(tokenStream,li.doc(i).get("你的字段"))  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索
    2008-07-15 15:15 | 小雨轉(zhuǎn)晴
    青菜貓 謝謝你的回帖 我在思考....  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索
    2008-07-16 14:51 | 小雨轉(zhuǎn)晴
    小貓
    你寫的優(yōu)化我看到啊,再有你循環(huán)添加的時(shí)候沒(méi)有碰到內(nèi)存溢出的問(wèn)題嘛!急待解決!  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索
    2008-07-16 14:51 | 小雨轉(zhuǎn)晴
    是沒(méi)看到 落個(gè)字  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索
    2008-07-17 08:54 | 青菜貓
    @小雨轉(zhuǎn)晴
    我沒(méi)有碰到過(guò),最好在建索引的時(shí)候,各更新的時(shí)間把內(nèi)存設(shè)置大一點(diǎn)...  回復(fù)  更多評(píng)論
      
    # re: 青菜貓lucene2.2.0全文檢索
    2008-12-26 16:05 | wide
    關(guān)鍵字:lucene.net 搜索排序 內(nèi)存猛漲 內(nèi)存溢出 IndexSearcher TopDocs weight

    public IndexSearcher(String path) throws IOException ...{
    this(IndexReader.open(path), true);
    }

    public IndexSearcher(Directory directory) throws IOException ...{
    this(IndexReader.open(directory), true);
    }

    public IndexSearcher(IndexReader r) ...{
    this(r, false);
    }

    private IndexSearcher(IndexReader r, boolean closeReader) ...{
    reader = r;
    this.closeReader = closeReader;
    }

    在lucene應(yīng)用中也許很多人都遇到這種情況。當(dāng)索引太大(大于10G),搜索時(shí)用前兩種構(gòu)造方法聲明IndexSearcher

    對(duì)象,這樣每構(gòu)造一個(gè)IndexSearcher對(duì)象,都要聲明一個(gè)索引對(duì)象(實(shí)際上是一個(gè)索引的多次連接),而每個(gè)索引對(duì)

    象都要占用一定量的系統(tǒng)資源(主要是內(nèi)存)。當(dāng)大量用戶訪問(wèn)系統(tǒng)時(shí),就會(huì)看到系統(tǒng)內(nèi)存直線增長(zhǎng),致使產(chǎn)生

    “java heap space”內(nèi)存耗盡或內(nèi)存溢出(.net)。這個(gè)問(wèn)題可以通過(guò)以下方法解決:

    終極解決方法:
    聯(lián)系方式: jackbison@163.com , pc2004lcq@126.com  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2007年10月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

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

    常用鏈接

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    青菜貓(孫宇博客),青菜貓(孫宇博客),青菜貓(孫宇博客)http://www.javasdc.cn/
    主站蜘蛛池模板: 亚洲A∨精品一区二区三区下载| 中文永久免费观看网站| 日本免费网站在线观看| 免费又黄又爽又猛大片午夜 | 亚洲精品国产精品乱码不99| 无码国产精品一区二区免费vr | 和老外3p爽粗大免费视频| 久久亚洲春色中文字幕久久久| 处破痛哭A√18成年片免费| 国产精品成人啪精品视频免费| 亚洲高清中文字幕综合网| 国产成人精品123区免费视频| 99在线视频免费观看| 亚洲日韩精品无码专区加勒比☆| 亚洲自偷自偷偷色无码中文| 无码一区二区三区AV免费| 中文字幕不卡免费视频| 亚洲另类自拍丝袜第五页| 亚洲AV无码一区二区乱子伦| 国产a级特黄的片子视频免费| 5g影院5g天天爽永久免费影院| 五月天婷婷免费视频| 亚洲一区动漫卡通在线播放| 亚洲综合在线另类色区奇米| 永久免费视频v片www| 最近新韩国日本免费观看| 一区二区视频免费观看| 久久亚洲国产成人影院| 亚洲视频在线观看网站| 亚洲午夜福利在线观看| 四虎永久在线精品免费观看地址| 精品无码免费专区毛片| 国产麻豆成人传媒免费观看| 五月天国产成人AV免费观看| 亚洲乱色伦图片区小说 | 日本道免费精品一区二区| 国产亚洲漂亮白嫩美女在线 | 日本高清免费中文在线看| 在线综合亚洲中文精品| 亚洲伊人久久大香线蕉苏妲己| 亚洲一区二区三区在线播放|