1, 被搜索的結果中,如何取得關鍵字周圍的數據. 例如獲取第一個關鍵字后面的數據.例如一段字符:
我愛北京天安門,你喜歡嗎.
我搜:北京
獲取結果如何獲取: 北京天安門 .
不要用substring或者正則解決了.那樣對于大文本不是解決方案. 因為這個數據沒必要全取出來
網上也有人問: 做全文檢索時,想把查詢到的附近的一段文本提取出來,像google那樣,如何才能使性能根好? 感覺indexof substring這些東性能會很差,如果是很大的文本 不知道大家有什么根好的辦法,獲取什么其它組件?
按照在 term vectors 中增加了 位置和偏移信息。(Grant Ingersoll & Christoph)的bug修改后的提示.應該可以找到.
2, 高亮顯示. 下面有一例子說明. 順便把2.0的那個bug說明也貼到下面
Lucene 中文分詞的 highlight 顯示
下面這個需要外的包: lucene-highlighter-2.2.0.jar 支持.請下載. 否則里面關于高亮顯示的都不會編譯成功. 下面程序是沒有問題的.結果也對.就是有版主說的問題.
lucene2.0 中文高亮的問題。新手問老問題,知道的大蝦賜教:
代碼:
public static void main(String[] args) {
try {
String text="上海麥為公貿易發展有限公司";
StandardAnalyzer ssss=new StandardAnalyzer();
QueryParser queryParse = new QueryParser("company_name", ssss);
SimpleHTMLFormatter sHtmlF = new SimpleHTMLFormatter("<b>", "</b>");
Highlighter hh = new Highlighter(sHtmlF,new QueryScorer(queryParse.parse("公司")));
TokenStream t=ssss.tokenStream("company_name",new StringReader(text));
Token tttt=t.next();
System.out.println(hh.getBestFragment(t,text));
} catch (Exception ex) {
}
}
結果:
上海麥為<b>公</b>貿易發展有限<b>公</b><b>司</b>
兩個問題:
1,怎么讓單字“公”不高亮。因為我只搜索了“公司”
2,怎么實現<b>公司</b>這樣的高亮,而不是<b>公</b><b>司</b>
答:
用中文分詞器,,,StandardAnalyzer是單字分詞的
1、分詞問題
2、Highlighter highlighter =new Highlighter(new
SimpleHTMLFormatter("<fontcolor=red>","</font>"),new
QueryScorer(query));
需要有一個好的中文分詞工具,能分出你需要的詞語,然后加亮。比如你可以用ik-analyzer啊等等的。
2.0bug解決::
22. 增加對 contrib/highlighter 的 NullFragmenter , 這對全文本加亮很有用。
(Erik Hatcher)
ExtJS教程-
Hibernate教程-
Struts2 教程-
Lucene教程