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

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

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

    鷹翔宇空

    學習和生活

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
    引自:http://www.gamvan.com/developer/java/opener/2005/12/849.html

    1、問題的來源 增加分詞以后結果的準確度提高了,但是用戶反映返回結果的速度很慢。原因是, Lucene 做每一篇文檔的相關關鍵詞的高亮顯示時,在運行時執行了很多遍的分詞操作。這樣降低了性能。
    2 、解決方法 
    在 Lucene1.4.3 版本中的一個新功能可以解決這個問題。 Term Vector 現在支持保存 Token.getPositionIncrement() 和 Token.startOffset() 以及 Token.endOffset() 信息。利用 Lucene 中新增加的 Token 信息的保存結果以后,就不需要為了高亮顯示而在運行時解析每篇文檔。通過 Field 方法控制是否保存該信息。修改 HighlighterTest.java 的代碼如下:
    
    代碼內容
    // 增加文檔時保存 Term 位置信息。
    private void addDoc(IndexWriter writer, String text) throws IOException
    {
    Document d = new Document();
    //Field f = new Field(FIELD_NAME, text, true, true, true);
    Field f = new Field(FIELD_NAME, text ,?
    Field.Store.YES, Field.Index.TOKENIZED,
    Field.TermVector.WITH_POSITIONS_OFFSETS);
    d.add(f);
    writer.addDocument(d);?
    ?}
    // 利用 Term 位置信息節省 Highlight 時間。
    void doStandardHighlights() throws Exception
    {
    ??? Highlighter highlighter =new Highlighter(this,new QueryScorer(query));
    highlighter.setTextFragmenter(new SimpleFragmenter(20));
    for (int i = 0; i < hits.length(); i++)
    {
    String text = hits.doc(i).get(FIELD_NAME);
    int maxNumFragmentsRequired = 2;
    String fragmentSeparator = "...";
    TermPositionVector tpv = (TermPositionVector)reader.getTermFreqVector(hits.id(i),FIELD_NAME);
    // 如果沒有 stop words 去除還可以改成 TokenSources.getTokenStream(tpv,true); 進一步提速。
    ?? TokenStream tokenStream=TokenSources.getTokenStream(tpv);
    ?? //analyzer.tokenStream(FIELD_NAME,new StringReader(text));
    ?? String result =
    ?? highlighter.getBestFragments(
    ? ?tokenStream,
    ?? text,
    ?? maxNumFragmentsRequired,?
    ?????? fragmentSeparator);
    ?? System.out.println(" " + result);
    ?}
    }

    最后把 highlight 包中的一個額外的判斷去掉。對于中文來說沒有明顯的單詞界限,所以下面這個判斷是錯誤的:
    
    tokenGroup.isDistinct(token)
    
    這樣中文分詞就不會影響到查詢速度了。
    posted on 2006-02-20 14:30 TrampEagle 閱讀(1206) 評論(0)  編輯  收藏 所屬分類: opensource
    主站蜘蛛池模板: 亚洲不卡中文字幕无码| 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲精品国产福利在线观看| 爽爽爽爽爽爽爽成人免费观看| 亚洲日本va午夜中文字幕久久| 黄页免费视频播放在线播放| 亚洲国产成人久久笫一页| 日韩亚洲人成网站| www.亚洲精品| 在线观看免费视频网站色| 亚洲成AV人片在线观看WWW| 精品熟女少妇av免费久久| 亚洲美女中文字幕| 三年片在线观看免费观看高清电影| 亚洲成a人片在线看| 色吊丝永久在线观看最新免费| 在线91精品亚洲网站精品成人| 又大又硬又爽免费视频| eeuss影院ss奇兵免费com| 亚洲熟妇av一区二区三区| 69国产精品视频免费| 亚洲中文无码亚洲人成影院| 免费看国产一级片| 国产在线观看无码免费视频| 久久亚洲精品成人AV| 妞干网免费观看视频| 一进一出60分钟免费视频| 亚洲国产成人一区二区精品区| 最新黄色免费网站| 亚洲AV无码专区亚洲AV桃| 在线亚洲精品自拍| 国产免费不卡v片在线观看 | 亚洲福利视频网址| 在线免费视频一区| 国产免费A∨在线播放| 亚洲综合激情六月婷婷在线观看| 色播在线永久免费视频| 久久国产免费一区| 日本系列1页亚洲系列| 亚洲AV成人片色在线观看高潮| 免费无码又爽又高潮视频|