lucene 高亮的實現

2021-08-30 22:35:46 字數 1011 閱讀 1224

之前在網上找了好久lucene高亮的包,找了幾個,但是我用的lucene是3.0以後的,而針對3.0的高亮網上是很少的,再 三決定還是自己寫個高亮吧。

下面是**:

public arraylistcutkeyword(string keyword, analyzer analyzer) 

}} catch (ioexception e)

return new arraylist(list);

}

上面這個方法主要是切割關鍵字,因為要高亮的話,肯定是在查詢類容裡高亮你所查詢的關鍵字,而這個方法就是把關鍵字用分詞器切割成乙個個小的關鍵字,例如:」我是中國人「,這個關鍵字傳入後返回的arraylist可能就是:我,我是,中,中國人。(當然這依據於你所用的分詞器了)。

@suppresswarnings("unchecked")

public arraylistcutsite(string content,arraylistlist)else}

});return l;

}

下面的方法是顯示的長度,你可能搜尋到的內容很長,不可能把所有的內容都顯示在結果頁面上,所以這裡就是合理的安排顯示結果長度。

string text =r;

string result ="";

int listlen = list.size();

int textlen = text.length();

for(int i=0;ifirst_site)

else

}if((i+1)==listlen-1)else

}return result; }

高亮的位置知道了,高亮的關鍵字知道了,最後就是高亮效果出來的**了:

public string highright(string content, arraylistlist) 

} }

return text;

}

lucene高亮顯示

lucene針對高亮顯示功能提供了兩種實現方式,分別是highlighter和fastvectorhighlighter 顧名思義,fastvectorhighlighter較highlighter速度更快,功能也更強大,但是有使用前提 建立索引時,需要儲存field的分詞向量資訊 termvect...

lucene 高亮顯示

lucene針對高亮顯示功能提供了兩種實現方式,分別是highlighter和fastvectorhighlighter。顧名思義,fastvectorhighlighter較highlighter速度更快,功能也更強大,但是有使用前提 建立索引時,需要儲存field的分詞向量資訊。termvect...

lucene中高亮遇到的問題

之前做高亮,用lucene預設的highlighter,顯示結果的時候有個問題.但是也是在細顆粒分詞的時候才出現的,比如說 中國地質大學 分詞的時候是乙個長詞,如果細顆粒分詞的話,我們希望分詞結果是 中國地質大學 中國 地質 大學 如果用highlighter的話,就會有個問題,當搜尋詞是 中國 大...