<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
    主站蜘蛛池模板: 中文字幕一区二区三区免费视频| 亚洲最大福利视频| 一区二区三区在线免费| 免费国产a国产片高清| 蜜桃传媒一区二区亚洲AV| 成全高清视频免费观看| 国产精品亚洲综合久久| 大陆一级毛片免费视频观看| 亚洲精品蜜夜内射| 在线永久免费观看黄网站| 国产精品亚洲色图| 2022中文字字幕久亚洲| 久久久久久国产a免费观看不卡| 在线亚洲午夜理论AV大片| 岛国精品一区免费视频在线观看| 国产成人精品日本亚洲专区61| 你懂得的在线观看免费视频| 亚洲AV无码国产丝袜在线观看 | 亚洲精品成人区在线观看| 一区二区三区免费视频播放器| 在线观看亚洲成人| 日韩免费无码一区二区三区| 亚洲va成无码人在线观看| 美女黄网站人色视频免费国产| 免费国产草莓视频在线观看黄| 中文国产成人精品久久亚洲精品AⅤ无码精品| xxxxx做受大片在线观看免费| 亚洲国产精品SSS在线观看AV| 最近免费最新高清中文字幕韩国| 亚洲a∨无码男人的天堂| 国产伦一区二区三区免费 | 亚洲一级毛片免费看| 日本免费一本天堂在线| 一级毛片完整版免费播放一区| 亚洲av无码专区国产乱码在线观看| 91精品免费久久久久久久久| 亚洲av日韩精品久久久久久a| 亚洲韩国精品无码一区二区三区| 亚洲黄色免费在线观看| 国产精品亚洲va在线观看| 亚洲AV人无码激艳猛片|