Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public String[] getFragments(int n) {
- String [] fragments = null;
- try {
- // Is IndexReader reachable ?
- if(!(searcher instanceof IndexSearcher))
- return fragments;
- IndexReader reader = ((IndexSearcher)searcher).getIndexReader();
- if(reader == null)
- return fragments;
- String fieldName = "@" + QName.createQName(ContentModel.PROP_CONTENT.getNamespaceURI(), ISO9075.encode(ContentModel.PROP_CONTENT.getLocalName()));
- TermPositionVector termPosVector = (TermPositionVector)reader.getTermFreqVector(hits.id(n), fieldName);
- if(termPosVector == null)
- return fragments;
- if(analyzer == null) {
- DictionaryService ds = ((ServiceRegistry)config.getApplicationContext().getBean(ServiceRegistry.SERVICE_REGISTRY)).getDictionaryService();
- analyzer = new LuceneAnalyser(ds, searchParameters.getMlAnalaysisMode() == null ? config.getDefaultMLSearchAnalysisMode() : searchParameters.getMlAnalaysisMode());
- }
- Document doc = hits.doc(n);
- String content = doc.get(fieldName);
- content = content == null ? "" : content;
- SpanScorer scorer = new SpanScorer(new QueryParser(fieldName, analyzer).parse(searchParameters.getQuery()),
- fieldName, new CachingTokenFilter(TokenSources.getTokenStream(termPosVector)));
- Fragmenter fragmenter = new SimpleSpanFragmenter(scorer, 70);
- Highlighter highlighter = new Highlighter(new SpanGradientFormatter(scorer.getMaxTermWeight(), null, null, "#FFFFFF", "#F2FA06"), scorer);
- highlighter.setTextFragmenter(fragmenter);
- highlighter.setMaxDocCharsToAnalyze(Integer.MAX_VALUE);
- fragments = highlighter.getBestFragments(TokenSources.getTokenStream(termPosVector), content, 3);
- }
- catch (IOException e) {
- throw new SearcherException("Query parse Error retrieving hit highlighted fragments", e);
- } catch (ParseException e) {
- throw new SearcherException("Query parse Error retrieving hit highlighted fragments", e);
- }
- return fragments;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement