final IndexSearcher searcher = state.borrowSearcher(isStaleOk(req)); final String etag = state.getEtag(); final FastVectorHighlighter fvh = new FastVectorHighlighter(true, true); final JSONArray result = new JSONArray(); try { String[] frags = fvh.getBestFragments(fvh.getFieldQuery(q), searcher.getIndexReader(), td.scoreDocs[i].doc, name, highlight_length, highlights); highlight_rows.put(name, frags);
public CustomFieldQuery(Query query, IndexReader reader, FastVectorHighlighter highlighter) throws IOException { this(query, reader, highlighter.isPhraseHighlight(), highlighter.isFieldMatch()); }
FastVectorHighlighter highlighter = new FastVectorHighlighter(true, true); String highlightedResult = highlighter.getBestFragment( highlighter.getFieldQuery(myQuery), indexReader, docId, CONTENT_FIELD_NAME, 50 //char length of fragment );
cache.fvh = new org.apache.lucene.search.vectorhighlight.FastVectorHighlighter(); fieldQuery = entry.noFieldMatchFieldQuery; cache.fvh.setPhraseLimit(field.fieldOptions().phraseLimit()); fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), fieldType.name(), field.fieldOptions().matchedFields(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder); } else { fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), fieldType.name(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder);
@Override public void withTopDocs(IndexSearcher searcher, Query q, TopDocs hits) throws Exception { IndexReader reader = searcher.getIndexReader(); final FieldQuery fq = highlighter.getFieldQuery( q, reader); for (ScoreDoc scoreDoc : docIdOrder(hits.scoreDocs)) { for (String hlField : hlFields) { String[] fragments = highlighter.getBestFragments(fq, reader, scoreDoc.doc, hlField, fragSize, maxFrags, fragListBuilder, fragmentsBuilder, preTags, postTags, encoder); preventOptimizeAway = fragments.length; } } } }
/** * return the best fragment. * * @param fieldQuery FieldQuery object * @param reader IndexReader of the index * @param docId document id to be highlighted * @param fieldName field of the document to be highlighted * @param fragCharSize the length (number of chars) of a fragment * @return the best fragment (snippet) string * @throws IOException */ public final String getBestFragment( final FieldQuery fieldQuery, IndexReader reader, int docId, String fieldName, int fragCharSize ) throws IOException { FieldFragList fieldFragList = getFieldFragList( fieldQuery, reader, docId, fieldName, fragCharSize ); return fragmentsBuilder.createFragment( reader, docId, fieldName, fieldFragList ); }
cache.fvh = new org.apache.lucene.search.vectorhighlight.FastVectorHighlighter(); fieldQuery = entry.noFieldMatchFieldQuery; cache.fvh.setPhraseLimit(field.fieldOptions().phraseLimit()); fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), fieldType.name(), field.fieldOptions().matchedFields(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder); } else { fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), fieldType.name(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder);
/** * return the best fragment. * * @param fieldQuery {@link FieldQuery} object * @param reader {@link IndexReader} of the index * @param docId document id to be highlighted * @param fieldName field of the document to be highlighted * @param fragCharSize the length (number of chars) of a fragment * @return the best fragment (snippet) string * @throws IOException If there is a low-level I/O error */ public final String getBestFragment( final FieldQuery fieldQuery, IndexReader reader, int docId, String fieldName, int fragCharSize ) throws IOException { FieldFragList fieldFragList = getFieldFragList( fragListBuilder, fieldQuery, reader, docId, fieldName, fragCharSize ); return fragmentsBuilder.createFragment( reader, docId, fieldName, fieldFragList ); }
cache.fvh = new org.apache.lucene.search.vectorhighlight.FastVectorHighlighter(); fieldQuery = entry.noFieldMatchFieldQuery; cache.fvh.setPhraseLimit(field.fieldOptions().phraseLimit()); fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), fieldType.name(), field.fieldOptions().matchedFields(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder); } else { fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), fieldType.name(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder);
@Override public String[] searchInDocument(String searchTerm, String id) { // sanity check if (searchTerm == null || id == null || searchTerm.isEmpty() || id.isEmpty()) return new String[]{}; try { DirectoryReader iReader = DirectoryReader.open(directory); IndexSearcher iSearcher = new IndexSearcher(iReader); // only search content MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[]{"content"}, analyzer); // set operator and contain by id parser.setDefaultOperator(QueryParser.Operator.AND); Query query = parser.parse(searchTerm); Filter filter = new QueryWrapperFilter(new TermQuery(new Term("id", id))); // do search, maximum of 1 document TopDocs topDocs = iSearcher.search(query, filter, 1); if (topDocs.scoreDocs.length > 0) { ScoreDoc scoreDoc = topDocs.scoreDocs[0]; // get highlighted text FastVectorHighlighter highlighter = new FastVectorHighlighter(); FieldQuery fieldQuery = highlighter.getFieldQuery(new QueryParser("content", analyzer).parse(searchTerm), iReader); // return max of 100 highlighted elements return highlighter.getBestFragments(fieldQuery, iReader, scoreDoc.doc, "content", 100, 100); } } catch (Throwable e) { logger.error("Error in search.", e); } return new String[]{}; }
public CustomFieldQuery(Query query, IndexReader reader, FastVectorHighlighter highlighter) throws IOException { this(query, reader, highlighter.isPhraseHighlight(), highlighter.isFieldMatch()); }
/** * return the best fragments. * * @param fieldQuery FieldQuery object * @param reader IndexReader of the index * @param docId document id to be highlighted * @param fieldName field of the document to be highlighted * @param fragCharSize the length (number of chars) of a fragment * @param maxNumFragments maximum number of fragments * @return created fragments or null when no fragments created. * size of the array can be less than maxNumFragments * @throws IOException */ public final String[] getBestFragments( final FieldQuery fieldQuery, IndexReader reader, int docId, String fieldName, int fragCharSize, int maxNumFragments ) throws IOException { FieldFragList fieldFragList = getFieldFragList( fieldQuery, reader, docId, fieldName, fragCharSize ); return fragmentsBuilder.createFragments( reader, docId, fieldName, fieldFragList, maxNumFragments ); }
cache.fvh = new org.apache.lucene.search.vectorhighlight.FastVectorHighlighter(); cache.fvh.setPhraseLimit(field.fieldOptions().phraseLimit()); fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), mapper.fieldType().name(), field.fieldOptions().matchedFields(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder); } else { fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), mapper.fieldType().name(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder);
FastVectorHighlighter highlighter = new FastVectorHighlighter(); FieldQuery fieldQuery = null; fieldQuery = highlighter.getFieldQuery(new QueryParser("content", analyzer).parse(searchTerm), iReader); String[] bestFragments = highlighter.getBestFragments(fieldQuery, iReader, scoreDoc.doc, "content", 18, 10); searchHit.setHighlightText(bestFragments);
public CustomFieldQuery(Query query, IndexReader reader, FastVectorHighlighter highlighter) throws IOException { this(query, reader, highlighter.isPhraseHighlight(), highlighter.isFieldMatch()); }
/** * return the best fragments. * * @param fieldQuery {@link FieldQuery} object * @param reader {@link IndexReader} of the index * @param docId document id to be highlighted * @param fieldName field of the document to be highlighted * @param fragCharSize the length (number of chars) of a fragment * @param maxNumFragments maximum number of fragments * @return created fragments or null when no fragments created. * size of the array can be less than maxNumFragments * @throws IOException If there is a low-level I/O error */ public final String[] getBestFragments( final FieldQuery fieldQuery, IndexReader reader, int docId, String fieldName, int fragCharSize, int maxNumFragments ) throws IOException { FieldFragList fieldFragList = getFieldFragList( fragListBuilder, fieldQuery, reader, docId, fieldName, fragCharSize ); return fragmentsBuilder.createFragments( reader, docId, fieldName, fieldFragList, maxNumFragments ); }
cache.fvh = new org.apache.lucene.search.vectorhighlight.FastVectorHighlighter(); cache.fvh.setPhraseLimit(field.fieldOptions().phraseLimit()); fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), mapper.fieldType().names().indexName(), field.fieldOptions().matchedFields(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder); } else { fragments = cache.fvh.getBestFragments(fieldQuery, hitContext.reader(), hitContext.docId(), mapper.fieldType().names().indexName(), fragmentCharSize, numberOfFragments, entry.fragListBuilder, entry.fragmentsBuilder, field.fieldOptions().preTags(), field.fieldOptions().postTags(), encoder);
public CustomFieldQuery(Query query, IndexReader reader, FastVectorHighlighter highlighter) throws IOException { this(query, reader, highlighter.isPhraseHighlight(), highlighter.isFieldMatch()); }
/** * return the best fragment. * * @param fieldQuery {@link FieldQuery} object * @param reader {@link IndexReader} of the index * @param docId document id to be highlighted * @param fieldName field of the document to be highlighted * @param fragCharSize the length (number of chars) of a fragment * @param fragListBuilder {@link FragListBuilder} object * @param fragmentsBuilder {@link FragmentsBuilder} object * @param preTags pre-tags to be used to highlight terms * @param postTags post-tags to be used to highlight terms * @param encoder an encoder that generates encoded text * @return the best fragment (snippet) string * @throws IOException If there is a low-level I/O error */ public final String getBestFragment( final FieldQuery fieldQuery, IndexReader reader, int docId, String fieldName, int fragCharSize, FragListBuilder fragListBuilder, FragmentsBuilder fragmentsBuilder, String[] preTags, String[] postTags, Encoder encoder ) throws IOException { FieldFragList fieldFragList = getFieldFragList( fragListBuilder, fieldQuery, reader, docId, fieldName, fragCharSize ); return fragmentsBuilder.createFragment( reader, docId, fieldName, fieldFragList, preTags, postTags, encoder ); }
public CustomFieldQuery(Query query, IndexReader reader, FastVectorHighlighter highlighter) throws IOException { this(query, reader, highlighter.isPhraseHighlight(), highlighter.isFieldMatch()); }