aymens

Untitled

Mar 21st, 2011
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.33 KB | None | 0 0
  1.     public String[] getFragments(int n)
  2.     {
  3.         String [] fragments = null;
  4.        
  5.         try
  6.         {
  7.             // Is IndexReader reachable ?
  8.             if(!(searcher instanceof IndexSearcher))
  9.                 return fragments;
  10.            
  11.             IndexReader reader = ((IndexSearcher)searcher).getIndexReader();
  12.            
  13.             if(reader == null)
  14.                 return fragments;
  15.            
  16.             String fieldName = "@" + QName.createQName(ContentModel.PROP_CONTENT.getNamespaceURI(), ISO9075.encode(ContentModel.PROP_CONTENT.getLocalName()));
  17.             TermPositionVector termPosVector = (TermPositionVector)reader.getTermFreqVector(hits.id(n), fieldName);
  18.            
  19.             if(termPosVector == null)
  20.                 return fragments;
  21.            
  22.             if(analyzer == null)
  23.             {
  24.                 DictionaryService ds = ((ServiceRegistry)config.getApplicationContext().getBean(ServiceRegistry.SERVICE_REGISTRY)).getDictionaryService();            
  25.                 analyzer = new LuceneAnalyser(ds, searchParameters.getMlAnalaysisMode() == null ? config.getDefaultMLSearchAnalysisMode() : searchParameters.getMlAnalaysisMode());
  26.             }
  27.            
  28.             Document doc = hits.doc(n);
  29.             String content = doc.get(fieldName);
  30.             content = content == null ? "" : content;
  31.            
  32.             SpanScorer scorer = new SpanScorer(new QueryParser(fieldName, analyzer).parse(searchParameters.getQuery()),
  33.                     fieldName, new CachingTokenFilter(TokenSources.getTokenStream(termPosVector)));
  34.             Fragmenter fragmenter = new SimpleSpanFragmenter(scorer, 70);
  35.             Highlighter highlighter = new Highlighter(new SpanGradientFormatter(scorer.getMaxTermWeight(), null, null, "#FFFFFF", "#F2FA06"), scorer);
  36.             highlighter.setTextFragmenter(fragmenter);
  37.             highlighter.setMaxDocCharsToAnalyze(Integer.MAX_VALUE);
  38.            
  39.             fragments = highlighter.getBestFragments(TokenSources.getTokenStream(termPosVector), content, 3);
  40.         }
  41.         catch (IOException e)
  42.         {
  43.             throw new SearcherException("Query parse Error retrieving hit highlighted fragments", e);
  44.         } catch (ParseException e)
  45.         {
  46.             throw new SearcherException("Query parse Error retrieving hit highlighted fragments", e);
  47.         }
  48.        
  49.         return fragments;
  50.     }
Advertisement
Add Comment
Please, Sign In to add comment