查询高亮 lucene 的 Highlighter

pom.xml中
<dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>2.4.1</version>
    </dependency>
   <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-highlighter</artifactId>
        <version>2.4.1</version>
    </dependency>


其中lucene-highlighter 在contrib中。

   @Autowired
    private Analyzer analyzer  ;
    @Autowired
    private   SimpleHTMLFormatter simpleHTMLFormatter ;   

 //text 文字标题 或者正文
   //keywords 查询关键字
   //wordNum 高亮返回段的字数
   //返回 匹配的高亮字符串 如果没有的话,返回为空
   private String highLight(String text, String keywords, int wordNum){

		QueryParser parser = new QueryParser("title",analyzer);
		Query query = null;
		try {
			query = parser.parse(keywords);
		} catch (ParseException e1) {
			e1.printStackTrace();
		}
		
		Highlighter highlighter = new Highlighter(simpleHTMLFormatter,	new QueryScorer(query));
		
		//这个wordNum是从text上截取的长度,不包括format中的字符,但是有时返回的不一定正好是wordNum长度?
		highlighter.setTextFragmenter(new SimpleFragmenter(wordNum));
		
		String highLightText;
		
		try {
			highLightText = highlighter.getBestFragment(this.analyzer, "title",	text);
			
			if (highLightText!=null)
				return highLightText;
			else
				return null; //没有关键字匹配的话,返回为空
				
		} catch (IOException e) {
			
			e.printStackTrace();
		}
		
		return null;
   }

你可能感兴趣的:(apache,xml,Lucene)