private FieldFragList getFieldFragList( final FieldQuery fieldQuery, IndexReader reader, int docId, String fieldName, int fragCharSize ) throws IOException { FieldTermStack fieldTermStack = new FieldTermStack( reader, docId, fieldName, fieldQuery ); FieldPhraseList fieldPhraseList = new FieldPhraseList( fieldTermStack, fieldQuery ); return fragListBuilder.createFieldFragList( fieldPhraseList, fragCharSize ); }
/** * Build a FieldFragList for one field. */ private FieldFragList getFieldFragList( FragListBuilder fragListBuilder, final FieldQuery fieldQuery, IndexReader reader, int docId, String matchedField, int fragCharSize ) throws IOException { FieldTermStack fieldTermStack = new FieldTermStack( reader, docId, matchedField, fieldQuery ); FieldPhraseList fieldPhraseList = new FieldPhraseList( fieldTermStack, fieldQuery, phraseLimit ); return fragListBuilder.createFieldFragList( fieldPhraseList, fragCharSize ); }
/** * Build a FieldFragList for more than one field. */ private FieldFragList getFieldFragList( FragListBuilder fragListBuilder, final FieldQuery fieldQuery, IndexReader reader, int docId, Set< String > matchedFields, int fragCharSize ) throws IOException { Iterator< String > matchedFieldsItr = matchedFields.iterator(); if ( !matchedFieldsItr.hasNext() ) { throw new IllegalArgumentException( "matchedFields must contain at least on field name." ); } FieldPhraseList[] toMerge = new FieldPhraseList[ matchedFields.size() ]; int i = 0; while ( matchedFieldsItr.hasNext() ) { FieldTermStack stack = new FieldTermStack( reader, docId, matchedFieldsItr.next(), fieldQuery ); toMerge[ i++ ] = new FieldPhraseList( stack, fieldQuery, phraseLimit ); } return fragListBuilder.createFieldFragList( new FieldPhraseList( toMerge ), fragCharSize ); }
public static void main( String[] args ) throws Exception { Analyzer analyzer = new WhitespaceAnalyzer(); QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "f", analyzer ); Query query = parser.parse( "a x:b" ); FieldQuery fieldQuery = new FieldQuery( query, true, false ); Directory dir = new RAMDirectory(); IndexWriter writer = new IndexWriter( dir, analyzer, MaxFieldLength.LIMITED ); Document doc = new Document(); doc.add( new Field( "f", "a a a b b c a b b c d e f", Store.YES, Index.ANALYZED, TermVector.WITH_POSITIONS_OFFSETS ) ); doc.add( new Field( "f", "b a b a f", Store.YES, Index.ANALYZED, TermVector.WITH_POSITIONS_OFFSETS ) ); writer.addDocument( doc ); writer.close(); IndexReader reader = IndexReader.open( dir, true ); FieldTermStack ftl = new FieldTermStack( reader, 0, "f", fieldQuery ); reader.close(); }