之前在網上找了好久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的話,就會有個問題,當搜尋詞是 中國 大...