« Java Reflection (JAVA反射)详解« »什么是软件架构 »
Lucene高亮Highlighter-demo源码

关键字: highlighter

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》播出时间

 


Tags: Lucene  demo  搜索引擎  分词  高亮  

原创文章如转载,请注明:转载自:飞扬部落编程仓库 : http://www.busfly.net/csdn/

本文链接地址:http://www.busfly.net/csdn/post/Lucene-Highlighter-demo.html

如果你喜欢本文,请顶一下,支持我,你的支持是我继续发好文章的最大动力。谢谢。
好东西需要分享,快把本文发给你的朋友吧~!~

     
相关文章:




◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
Feed订阅集
网站分类
勤劳致富^.^
最近发表
最新评论及回复
最近留言
随机推荐文章
Powered By Z-Blog   STYLE by busfly . FatMouse
Copyright © 2007 巴士飞扬技术博客. . 沪ICP备07027972号. 会员群1(VS为主):3769186.