+++ /dev/null
-package org.apache.lucene.search.vectorhighlight;
-
-/**
- * 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.
- */
-
-import java.io.IOException;
-
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.highlight.Encoder;
-
-/**
- * Another highlighter implementation.
- *
- */
-public class FastVectorHighlighter {
-
- public static final boolean DEFAULT_PHRASE_HIGHLIGHT = true;
- public static final boolean DEFAULT_FIELD_MATCH = true;
- private final boolean phraseHighlight;
- private final boolean fieldMatch;
- private final FragListBuilder fragListBuilder;
- private final FragmentsBuilder fragmentsBuilder;
- private int phraseLimit = Integer.MAX_VALUE;
-
- /**
- * the default constructor.
- */
- public FastVectorHighlighter(){
- this( DEFAULT_PHRASE_HIGHLIGHT, DEFAULT_FIELD_MATCH );
- }
-
- /**
- * a constructor. Using {@link SimpleFragListBuilder} and {@link ScoreOrderFragmentsBuilder}.
- *
- * @param phraseHighlight true or false for phrase highlighting
- * @param fieldMatch true of false for field matching
- */
- public FastVectorHighlighter( boolean phraseHighlight, boolean fieldMatch ){
- this( phraseHighlight, fieldMatch, new SimpleFragListBuilder(), new ScoreOrderFragmentsBuilder() );
- }
-
- /**
- * a constructor. A {@link FragListBuilder} and a {@link FragmentsBuilder} can be specified (plugins).
- *
- * @param phraseHighlight true of false for phrase highlighting
- * @param fieldMatch true of false for field matching
- * @param fragListBuilder an instance of {@link FragListBuilder}
- * @param fragmentsBuilder an instance of {@link FragmentsBuilder}
- */
- public FastVectorHighlighter( boolean phraseHighlight, boolean fieldMatch,
- FragListBuilder fragListBuilder, FragmentsBuilder fragmentsBuilder ){
- this.phraseHighlight = phraseHighlight;
- this.fieldMatch = fieldMatch;
- this.fragListBuilder = fragListBuilder;
- this.fragmentsBuilder = fragmentsBuilder;
- }
-
- /**
- * create a {@link FieldQuery} object.
- *
- * @param query a query
- * @return the created {@link FieldQuery} object
- */
- public FieldQuery getFieldQuery( Query query ){
- return new FieldQuery( query, phraseHighlight, fieldMatch );
- }
-
- /**
- * 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
- */
- 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 );
- }
-
- /**
- * 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
- */
- 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 );
- }
-
- /**
- * 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
- */
- 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 );
- }
-
- /**
- * 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
- * @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 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,
- FragListBuilder fragListBuilder, FragmentsBuilder fragmentsBuilder,
- String[] preTags, String[] postTags, Encoder encoder ) throws IOException {
- FieldFragList fieldFragList =
- getFieldFragList( fragListBuilder, fieldQuery, reader, docId, fieldName, fragCharSize );
- return fragmentsBuilder.createFragments( reader, docId, fieldName, fieldFragList, maxNumFragments,
- preTags, postTags, encoder );
- }
-
- private FieldFragList getFieldFragList( FragListBuilder fragListBuilder,
- 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, phraseLimit );
- return fragListBuilder.createFieldFragList( fieldPhraseList, fragCharSize );
- }
-
- /**
- * return whether phraseHighlight or not.
- *
- * @return whether phraseHighlight or not
- */
- public boolean isPhraseHighlight(){ return phraseHighlight; }
-
- /**
- * return whether fieldMatch or not.
- *
- * @return whether fieldMatch or not
- */
- public boolean isFieldMatch(){ return fieldMatch; }
-
- /**
- * @return the maximum number of phrases to analyze when searching for the highest-scoring phrase.
- */
- public int getPhraseLimit () { return phraseLimit; }
-
- /**
- * set the maximum number of phrases to analyze when searching for the highest-scoring phrase.
- * The default is unlimited (Integer.MAX_VALUE).
- */
- public void setPhraseLimit (int phraseLimit) { this.phraseLimit = phraseLimit; }
-}