lucene高亮:lucene高亮显示

package src;

import java.io.StringReader;
import java.util.Date;

import org.apache.lucene .analysis.Analyzer;
import org.apache.lucene .analysis.SimpleAnalyzer;
import org.apache.lucene .analysis.TokenStream;
import org.apache.lucene .analysis.cjk.CJKAnalyzer;
import org.apache.lucene .analysis.cn.ChineseAnalyzer;
import org.apache.lucene .analysis.standard.StandardAnalyzer;
import org.apache.lucene .document.Document;
import org.apache.lucene .index.IndexReader;
import org.apache.lucene .index.Term;
import org.apache.lucene .queryParser.QueryParser;
import org.apache.lucene .search.FuzzyQuery;
import org.apache.lucene .search.Hits;
import org.apache.lucene .search.IndexSearcher;
import org.apache.lucene .search.Query;

import java.util.Date;

import org.apache.lucene .analysis.standard.StandardAnalyzer;
import org.apache.lucene .document.Document;
import org.apache.lucene .index.IndexReader;
import org.apache.lucene .queryParser.QueryParser;
import org.apache.lucene .search.Hits;
import org.apache.lucene .search.IndexSearcher;
import org.apache.lucene .search.Query;
import org.apache.lucene .search.highlight.Highlighter;
import org.apache.lucene .search.highlight.QueryScorer;
import org.apache.lucene .search.highlight.SimpleFragmenter;
import org.apache.lucene .search.highlight.SimpleHTMLFormatter;

public LuceneSearch {
public void (String args) throws Exception{
LuceneSearch test = LuceneSearch;
//
Hits h = null;
h = test.search("显示 ");
test.prResult(h);


h = test.search("jy*");
test.prResult(h);

h = test.search("djy");
test.prResult(h);

}
public LuceneSearch{
try{
searcher = IndexSearcher(IndexReader.open("E:lucene est4index"));
}catch(Exception e){
e.prStackTrace;
}
}
//声明个IndexSearcher对象
private IndexSearcher searcher = null;
//声明个Query对象
private Query query = null;
ChineseAnalyzer analyzer = ChineseAnalyzer;
Highlighter highlighter = null;
public final Hits search(String keyword){
.out.prln("正在检索关键字:"+keyword);
try{
QueryParser qp = QueryParser("title",analyzer);
query = qp.parse(keyword);

Term term = Term("content",keyword);
FuzzyQuery fq = FuzzyQuery(term);
Date start = Date;

//Hits hits = searcher.search(query);
Hits hits = searcher.search(query);

//高亮 显示设置
SimpleHTMLFormatter simpleHTMLFormatter = SimpleHTMLFormatter("","");
highlighter = Highlighter(simpleHTMLFormatter, QueryScorer(query));
highlighter.TextFragmenter( SimpleFragmenter(10));//这个100是指定关键字串context长度你可以自
己设定不可能返回整篇正文内容

Date end = Date;
.out.prln("检索完成,用时"+(end.getTime-start.getTime)+"毫秒");
hits;
}catch(Exception e){
e.prStackTrace;
null;
}

}
public void prResult(Hits h){
(h.length 0){
.out.prln("对不起,没有找到您要结果.");
}{
for( i = 0; i < h.length; i){
try{
Document doc = h.doc(i);
.out.prln("这个是"+(i+1)+"个结果:"+doc.get("id")+" title:"+doc.get("title")+"
content:"+doc.get("content"));

//高亮 出显示
TokenStream tokenStream =analyzer.tokenStream("content", StringReader(doc.get("title")));
.out.prln(highlighter.getBestFragment(tokenStream,h.doc(i).get("title")));

//.out.prln(doc.get("path"));
}catch(Exception e){
e.prStackTrace;
}
}
}
.out.prln("--------------------------------------");
}
}

猜你喜欢

转载自itfafa.iteye.com/blog/1688132