lucene 2.4高亮显示成功了!但是为什么只能在一个域搜索?其他域的关键字没高亮?...

xiaoxiao2026-09-16  1

lucene 2.4高亮显示成功了!但是为什么只能在一个域搜索?其他域的关键字没高亮?我在DOCNAME域搜索高亮显示但为什么DOCAUTHOR没高亮呢?各位有什么看法啊?[img][/img] package com.wcb.lucene.impl; /** * wcb */ import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.io.IOException; import java.util.ArrayList; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.Field.Index; import org.apache.lucene.document.Field.Store; import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.BooleanClause.Occur; 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; import com.wcb.lucene.model.DocBean; public class IndexSearch_wcb { // public static void main(String[] a) throws Exception { // System.out.println((new IndexSearch_wcb().Search("С��")).size()); // } public ArrayList Search(String keyword) throws Exception { ArrayList result = new ArrayList(); try { IndexSearcher searcher = new IndexSearcher(CreateIndex.IndexDir); BooleanQuery mainQuery = new BooleanQuery(); StandardAnalyzer standeranalyzer = new StandardAnalyzer(); QueryParser authorParser = new QueryParser("DOCAUTHOR", standeranalyzer); QueryParser docnameParser = new QueryParser("DOCNAME", standeranalyzer); Query authorQuery = authorParser.parse(keyword); Query docnameQuery = docnameParser.parse(keyword); mainQuery.add(docnameQuery, Occur.SHOULD); mainQuery.add(authorQuery, Occur.SHOULD); Hits hits = searcher.search(mainQuery); 准备 Highlighter highlighter = null; SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<b><font color='green'>", "</font></b>"); highlighter = new Highlighter(simpleHTMLFormatter,new QueryScorer(mainQuery)); highlighter.setTextFragmenter(new SimpleFragmenter(100)); if(hits.length()>0){ for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); /高亮的分析 // TokenStream tokenStream = luceneAnalyzer.tokenStream("contents", new StringReader(hits.doc.get("contents"))); TokenStream tokenStream =standeranalyzer.tokenStream("token", new StringReader(doc.get("DOCNAME"))); //TokenStream tokenStream2 =standeranalyzer.tokenStream("token2", new StringReader(doc.get("DOCAUTHOR"))); / System.out.print(doc.getField("DOCAUTHOR").stringValue()+"\t"); System.out.print(doc.getField("DOCNAME").stringValue()+"\t"); System.out.print(doc.getField("DOCUPTIME").stringValue()+"\t"); System.out.println(doc.getField("DOCID").stringValue()); DocBean docbean = new DocBean(); docbean.setDocId(Integer.parseInt(doc.getField("DOCID").stringValue())); //docbean.setDocAuthor(highlighter.getBestFragment(tokenStream,doc.get("DOCAUTHOR"))); docbean.setDocAuthor(doc.getField("DOCAUTHOR").stringValue()); docbean.setDocName(highlighter.getBestFragment(tokenStream,doc.get("DOCNAME"))); docbean.setDocUp_time(doc.getField("DOCUPTIME").stringValue()); result.add(docbean); } } } catch (Exception e) { e.printStackTrace(); } return result; } } 关键字:小吴 小吴:[b]小吴[/b]的sdf :16 :2009-11-13 小吴:[b]小吴[/b]hgjk :25 :2009-11-13 小吴:[b]小吴[/b]gf文章 :19 :2009-11-13 xiaowu小吴:[b]小吴[/b]的hjk :24 :2009-11-13 xiaowu小吴:[b]小吴[/b]jk文章 :22 :2009-11-13 小吴: :1 :2009-05-11 小吴:小hfg的文章 :20 :2009-11-13 xiaowu:[b]小吴[/b]sdf :15 :2009-11-13
转载请注明原文地址: https://www.6miu.com/read-5052756.html

最新回复(0)