经过测试新的lucene搜索方法更新如下:
public Hits doSearch(String key) { Hits hits = null; try { //ir = IndexReader.open(indexDir); //search = new IndexSearcher(ir); String fields[] = { "title", "content" }; QueryParser parser = new MultiFieldQueryParser(fields,new StandardAnalyzer()); Query query = parser.parse(key); hits = search.search(query); for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); String text = hits.doc(i).get("content"); SimpleHTMLFormatter sHtmlF = new SimpleHTMLFormatter("<b><font color='red'>", "</font></b>"); Highlighter highlighter = new Highlighter(sHtmlF,new QueryScorer(parser.parse(key))); //highlighter.setTextFragmenter(new SimpleFragmenter(100)); TokenStream tokenStream = new StandardAnalyzer().tokenStream("content", new StringReader(text)); // Get 3 best fragments and seperate with a "..." String result = highlighter.getBestFragments(tokenStream, text, 3, "..."); //System.out.println(result); Field tempField = new Field("content", result,Field.Store.NO,Field.Index.TOKENIZED,Field.TermVector.YES); doc.removeField("content"); doc.add(tempField); } } catch (Exception e) { e.printStackTrace(); } System.out.println("搜索结果:" + hits.length()); return hits; } [/quote] 原来的自定义的内容处理方法: [quote] //取消此方法: //public String content2intro(String content, String key){ //. //. //.
|
|
最新的搜索效果如下:<img src="/bbs/upfile/doc/20060712/11526882757401157793070.gif" border="0"/>

|