/** * 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 void addIfNoOverlap( WeightedPhraseInfo wpi ){ for( WeightedPhraseInfo existWpi : getPhraseList() ){ if( existWpi.isOffsetOverlap( wpi ) ) { // WeightedPhraseInfo.addIfNoOverlap() dumps the second part of, for example, hyphenated words (social-economics). // The result is that all informations in TermInfo are lost and not available for further operations. existWpi.getTermsInfos().addAll( wpi.getTermsInfos() ); return; } } getPhraseList().add( wpi ); }
fieldTermStack.push( ti ); if( currMap.isValidTermOrPhrase( phraseCandidate ) ){ addIfNoOverlap( new WeightedPhraseInfo( phraseCandidate, currMap.getBoost(), currMap.getTermOrPhraseNumber() ) ); currMap = fieldQuery.searchPhrase( field, phraseCandidate ); if( currMap != null ){ addIfNoOverlap( new WeightedPhraseInfo( phraseCandidate, currMap.getBoost(), currMap.getTermOrPhraseNumber() ) ); break;
fieldTermStack.push( ti ); if( currMap.isValidTermOrPhrase( phraseCandidate ) ){ addIfNoOverlap( new WeightedPhraseInfo( phraseCandidate, currMap.getBoost(), currMap.getTermOrPhraseNumber() ) ); currMap = fieldQuery.searchPhrase( field, phraseCandidate ); if( currMap != null ){ addIfNoOverlap( new WeightedPhraseInfo( phraseCandidate, currMap.getBoost(), currMap.getTermOrPhraseNumber() ) ); break;
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 ); }
IteratorQueue<WeightedPhraseInfo> queue = new IteratorQueue<>(fieldPhraseList.getPhraseList().iterator()); WeightedPhraseInfo phraseInfo = null; int startOffset = 0;
/** * 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 ); }