<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
    主站蜘蛛池模板: 亚洲国产高清国产拍精品| 亚洲一区二区三区日本久久九| 亚洲夂夂婷婷色拍WW47| 91久久成人免费| 亚洲精品成人久久| 亚洲福利电影在线观看| 亚洲国产精品99久久久久久| 成人免费网站在线观看| 成人区精品一区二区不卡亚洲| 国产精品永久免费视频| 久久亚洲AV永久无码精品| 视频免费1区二区三区| 亚洲免费一级视频| 亚洲AV无码乱码麻豆精品国产| 波多野结衣免费在线| 亚洲精品av无码喷奶水糖心| 国产真实伦在线视频免费观看| 久久精品国产亚洲AV| **aaaaa毛片免费同男同女| 1区1区3区4区产品亚洲| 成年在线观看免费人视频草莓| 亚洲欧美成人av在线观看| 国产美女精品久久久久久久免费| 亚洲一区综合在线播放| 日韩大片免费观看视频播放| 四虎成年永久免费网站| 亚洲av无码一区二区三区不卡| 麻豆成人久久精品二区三区免费| 亚洲国产美女福利直播秀一区二区| 国产免费人成视频尤勿视频| 亚洲va在线va天堂va四虎| 中国在线观看免费高清完整版| 疯狂做受xxxx高潮视频免费| 日日噜噜噜噜夜夜爽亚洲精品| 99re在线视频免费观看| 亚洲AV无码一区二区三区电影| 亚洲日韩aⅴ在线视频| 青青草免费在线视频| 香蕉国产在线观看免费| 国产大片91精品免费看3| 国产亚洲福利在线视频|