/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.lucene.search.vectorhighlight;

import org.apache.lucene.search.vectorhighlight.FieldPhraseList.WeightedPhraseInfo;
import org.apache.lucene.search.vectorhighlight.FieldPhraseList.WeightedPhraseInfo.Toffs;

import java.util.ArrayList;
import java.util.List;

FieldFragList has a list of "frag info" that is used by FragmentsBuilder class to create fragments (snippets).
/** * FieldFragList has a list of "frag info" that is used by FragmentsBuilder class * to create fragments (snippets). */
public abstract class FieldFragList { private List<WeightedFragInfo> fragInfos = new ArrayList<>();
a constructor.
Params:
  • fragCharSize – the length (number of chars) of a fragment
/** * a constructor. * * @param fragCharSize the length (number of chars) of a fragment */
public FieldFragList( int fragCharSize ){ }
convert the list of WeightedPhraseInfo to WeightedFragInfo, then add it to the fragInfos
Params:
  • startOffset – start offset of the fragment
  • endOffset – end offset of the fragment
  • phraseInfoList – list of WeightedPhraseInfo objects
/** * convert the list of WeightedPhraseInfo to WeightedFragInfo, then add it to the fragInfos * * @param startOffset start offset of the fragment * @param endOffset end offset of the fragment * @param phraseInfoList list of WeightedPhraseInfo objects */
public abstract void add( int startOffset, int endOffset, List<WeightedPhraseInfo> phraseInfoList );
return the list of WeightedFragInfos.
Returns:fragInfos.
/** * return the list of WeightedFragInfos. * * @return fragInfos. */
public List<WeightedFragInfo> getFragInfos() { return fragInfos; }
List of term offsets + weight for a frag info
/** * List of term offsets + weight for a frag info */
public static class WeightedFragInfo { private List<SubInfo> subInfos; private float totalBoost; private int startOffset; private int endOffset; public WeightedFragInfo( int startOffset, int endOffset, List<SubInfo> subInfos, float totalBoost ){ this.startOffset = startOffset; this.endOffset = endOffset; this.totalBoost = totalBoost; this.subInfos = subInfos; } public List<SubInfo> getSubInfos(){ return subInfos; } public float getTotalBoost(){ return totalBoost; } public int getStartOffset(){ return startOffset; } public int getEndOffset(){ return endOffset; } @Override public String toString(){ StringBuilder sb = new StringBuilder(); sb.append( "subInfos=(" ); for( SubInfo si : subInfos ) sb.append( si.toString() ); sb.append( ")/" ).append( totalBoost ).append( '(' ).append( startOffset ).append( ',' ).append( endOffset ).append( ')' ); return sb.toString(); }
Represents the list of term offsets for some text
/** * Represents the list of term offsets for some text */
public static class SubInfo { private final String text; // unnecessary member, just exists for debugging purpose private final List<Toffs> termsOffsets; // usually termsOffsets.size() == 1, // but if position-gap > 1 and slop > 0 then size() could be greater than 1 private final int seqnum; private final float boost; // used for scoring split WeightedPhraseInfos. public SubInfo( String text, List<Toffs> termsOffsets, int seqnum, float boost ){ this.text = text; this.termsOffsets = termsOffsets; this.seqnum = seqnum; this.boost = boost; } public List<Toffs> getTermsOffsets(){ return termsOffsets; } public int getSeqnum(){ return seqnum; } public String getText(){ return text; } public float getBoost(){ return boost; } @Override public String toString(){ StringBuilder sb = new StringBuilder(); sb.append( text ).append( '(' ); for( Toffs to : termsOffsets ) sb.append( to.toString() ); sb.append( ')' ); return sb.toString(); } } } }