lucene高亮demo

java 代码
  1. package com.feedsky.lucene;   
  2.   
  3. import java.io.StringReader;   
  4.   
  5. import org.apache.lucene.analysis.Analyzer;   
  6. import org.apache.lucene.analysis.TokenStream;   
  7. import org.apache.lucene.document.Document;   
  8. import org.apache.lucene.document.Field;   
  9. import org.apache.lucene.index.IndexWriter;   
  10. import org.apache.lucene.queryParser.QueryParser;   
  11. import org.apache.lucene.search.Hits;   
  12. import org.apache.lucene.search.IndexSearcher;   
  13. import org.apache.lucene.search.Query;   
  14. import org.apache.lucene.search.highlight.Highlighter;   
  15. import org.apache.lucene.search.highlight.QueryScorer;   
  16. import org.apache.lucene.search.highlight.SimpleFragmenter;   
  17. import org.apache.lucene.search.highlight.SimpleHTMLFormatter;   
  18. import org.apache.lucene.store.Directory;   
  19. import org.apache.lucene.store.RAMDirectory;   
  20.   
  21.   
  22.   
  23. public class HighLighterTest   
  24. {   
  25.   
  26.     public static void main(String[] args)   
  27.     {   
  28.         String fieldName = "text";   
  29.         String text = "《越狱3》播出时间再次延期 急煞中国“狱友” 巨型变形金刚惊现北京 《龙珠Z》绝招威力排行 《不能说的秘密》清纯版 迅雷宽频合作发行 《越狱动画版》"//检索内容   
  30.   
  31.         //采用猎兔分词   
  32.         Analyzer analyzer = new CnAnalyzer();   
  33.   
  34.         Directory directory = new RAMDirectory();   
  35.   
  36.         try  
  37.         {   
  38.             //索引   
  39.             IndexWriter iwriter = new IndexWriter(directory, analyzer, true);   
  40.             iwriter.setMaxFieldLength(25000);   
  41.             Document doc = new Document();   
  42.             doc.add(new Field(fieldName, text, Field.Store.YES,   
  43.                     Field.Index.TOKENIZED,   
  44.                     Field.TermVector.WITH_POSITIONS_OFFSETS));   
  45.             iwriter.addDocument(doc);   
  46.             iwriter.close();   
  47.   
  48.             IndexSearcher isearcher = new IndexSearcher(directory);   
  49.                
  50.             QueryParser queryParse = new QueryParser(fieldName, analyzer);   
  51.             Query query = queryParse.parse("越狱");   
  52.             Hits hits = isearcher.search(query);   
  53.             for (int i = 0; i < hits.length(); i++) {   
  54.                 Document docTemp = hits.doc(i);   
  55.                 String value = docTemp.get(fieldName);   
  56.         //      对要高亮显示的字段格式化,这里只是加红色显示和加粗   
  57.                 SimpleHTMLFormatter sHtmlF = new SimpleHTMLFormatter("<b><font color='red'>""</font></b>");   
  58.                 Highlighter highlighter = new Highlighter(sHtmlF,new QueryScorer(query));   
  59.                 highlighter.setTextFragmenter(new SimpleFragmenter(10));   
  60.                    
  61.                 if (value != null) {   
  62.                     TokenStream tokenStream = analyzer.tokenStream(fieldName,new StringReader(value));   
  63.                     String str = highlighter.getBestFragment(tokenStream, value);   
  64.                        
  65.                     System.out.println(str);   
  66.                 }   
  67.            }   
  68.     
  69.             isearcher.close();   
  70.             directory.close();   
  71.         }   
  72.         catch (Exception e)   
  73.         {   
  74.             e.printStackTrace();   
  75.         }   
  76.     }   
  77.   
  78. }   

 

 

运行结果为:

《<b><font color='red'>越狱</font></b>3》播出时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值