Example usage for org.apache.lucene.search.highlight Highlighter Highlighter

List of usage examples for org.apache.lucene.search.highlight Highlighter Highlighter

Introduction

In this page you can find the example usage for org.apache.lucene.search.highlight Highlighter Highlighter.

Prototype

public Highlighter(Scorer fragmentScorer) 

Source Link

Usage

From source file:org.paxle.se.index.lucene.impl.SnippetFetcher.java

License:Open Source License

public String getSnippet(Query query, String locationStr) {
    Reader textReader = null;//from   www.  ja  va 2s . c o  m
    try {
        // creating a dummy command
        URI locationURI = URI.create(locationStr);
        ICommand cmd = this.docFactory.createDocument(ICommand.class);
        cmd.setLocation(locationURI);

        // crawling the resource
        this.crawler.process(cmd);
        if (cmd.getResult() != Result.Passed)
            return null;

        // parsing the resource
        this.parser.process(cmd);
        if (cmd.getResult() != Result.Passed)
            return null;

        // trying to get the parsed content
        IParserDocument pdoc = cmd.getParserDocument();
        if (pdoc == null)
            return null;
        else if (pdoc.getStatus() != Status.OK)
            return null;

        // getting the document content
        textReader = pdoc.getTextAsReader();
        if (textReader == null)
            return null;

        // reading some text
        StringBuilder text = new StringBuilder();
        this.ioTools.copy(textReader, text, 10240);

        final Highlighter highlighter = new Highlighter(new QueryScorer(query));
        final TokenStream tokenStream = this.analyzer.tokenStream("content", new StringReader(text.toString()));
        final String result = highlighter.getBestFragments(tokenStream, text.toString(), 3, "...");

        return result;
    } catch (Throwable e) {
        this.logger.error(e.getMessage(), e);
    } finally {
        // closing reader
        if (textReader != null) {
            try {
                textReader.close();
            } catch (Exception e) {
                this.logger.error(e.getMessage(), e);
            }
        }
    }

    return null;
}

From source file:persistence.lucene.search.QueryExecutorHelper.java

License:Open Source License

List<QueryResult> queryDocuments(final String query, final String[] fields, final String user)
        throws ParseException, IOException, InvalidTokenOffsetsException {
    int hitsPerPage = 10;
    MultiFieldQueryParser queryParser = new MultiFieldQueryParser(fields, new StandardAnalyzer());

    Query luceneQuery = queryParser.parse(query);
    Highlighter highlighter = new Highlighter(new QueryScorer(luceneQuery));

    DirectoryReader indexReader = DirectoryReader.open(directory);
    IndexSearcher searcher = new IndexSearcher(indexReader);

    TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
    TermsFilter filter = new TermsFilter(new Term(FullTextSearchResource.DOCUMENT_OWNER, user.toLowerCase()));
    searcher.search(luceneQuery, filter, collector);

    ScoreDoc[] docs = collector.topDocs().scoreDocs;
    List<QueryResult> resultBeans = new ArrayList<>(docs.length);
    for (ScoreDoc doc : docs) {
        Document document = searcher.doc(doc.doc);
        String text = document.get(FullTextSearchResource.DOCUMENT_CONTENT_FIELD);
        TokenStream tokenStream = TokenSources.getAnyTokenStream(searcher.getIndexReader(), doc.doc,
                FullTextSearchResource.DOCUMENT_CONTENT_FIELD, standardAnalyzer);
        TextFragment[] fragments = highlighter.getBestTextFragments(tokenStream, text, false, 10);

        resultBeans.add(new QueryResult(doc.doc, doc.score, document, fragments));
    }/*from   w w  w .j a v  a 2  s  .c o  m*/

    indexReader.close();
    return resultBeans;
}