Class SimpleTextKnnVectorsReader
- java.lang.Object
-
- org.apache.lucene.codecs.KnnVectorsReader
-
- org.apache.lucene.codecs.simpletext.SimpleTextKnnVectorsReader
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,Accountable
public class SimpleTextKnnVectorsReader extends KnnVectorsReader
Reads vector values from a simple text format. All vectors are read up front and cached in RAM in order to support random access. FOR RECREATIONAL USE ONLY
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classSimpleTextKnnVectorsReader.FieldEntryprivate static classSimpleTextKnnVectorsReader.SimpleTextVectorValues
-
Field Summary
Fields Modifier and Type Field Description private static longBASE_RAM_BYTES_USEDprivate IndexInputdataInprivate static BytesRefEMPTYprivate java.util.Map<java.lang.String,SimpleTextKnnVectorsReader.FieldEntry>fieldEntriesprivate SegmentReadStatereadStateprivate BytesRefBuilderscratch-
Fields inherited from interface org.apache.lucene.util.Accountable
NULL_ACCOUNTABLE
-
-
Constructor Summary
Constructors Constructor Description SimpleTextKnnVectorsReader(SegmentReadState readState)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheckIntegrity()Checks consistency of this reader.voidclose()VectorValuesgetVectorValues(java.lang.String field)Returns theVectorValuesfor the givenfield.private intparseInt(BytesRef prefix)private longparseLong(BytesRef prefix)longramBytesUsed()Return the memory usage of this object in bytes.private intreadInt(IndexInput in, BytesRef field)private longreadLong(IndexInput in, BytesRef field)private java.lang.StringreadString(IndexInput in, BytesRef field)TopDocssearch(java.lang.String field, float[] target, int k, Bits acceptDocs, int visitedLimit)Return the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function.private booleanstartsWith(BytesRef prefix)private java.lang.StringstripPrefix(BytesRef prefix)-
Methods inherited from class org.apache.lucene.codecs.KnnVectorsReader
getMergeInstance
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.lucene.util.Accountable
getChildResources
-
-
-
-
Field Detail
-
BASE_RAM_BYTES_USED
private static final long BASE_RAM_BYTES_USED
-
EMPTY
private static final BytesRef EMPTY
-
readState
private final SegmentReadState readState
-
dataIn
private final IndexInput dataIn
-
scratch
private final BytesRefBuilder scratch
-
fieldEntries
private final java.util.Map<java.lang.String,SimpleTextKnnVectorsReader.FieldEntry> fieldEntries
-
-
Constructor Detail
-
SimpleTextKnnVectorsReader
SimpleTextKnnVectorsReader(SegmentReadState readState) throws java.io.IOException
- Throws:
java.io.IOException
-
-
Method Detail
-
getVectorValues
public VectorValues getVectorValues(java.lang.String field) throws java.io.IOException
Description copied from class:KnnVectorsReaderReturns theVectorValuesfor the givenfield. The behavior is undefined if the given field doesn't have KNN vectors enabled on itsFieldInfo. The return value is nevernull.- Specified by:
getVectorValuesin classKnnVectorsReader- Throws:
java.io.IOException
-
search
public TopDocs search(java.lang.String field, float[] target, int k, Bits acceptDocs, int visitedLimit) throws java.io.IOException
Description copied from class:KnnVectorsReaderReturn the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function. The score of each document is derived from the vector similarity in a way that ensures scores are positive and that a larger score corresponds to a higher ranking.The search is allowed to be approximate, meaning the results are not guaranteed to be the true k closest neighbors. For large values of k (for example when k is close to the total number of documents), the search may also retrieve fewer than k documents.
The returned
TopDocswill contain aScoreDocfor each nearest neighbor, in order of their similarity to the query vector (decreasing scores). TheTotalHitscontains the number of documents visited during the search. If the search stopped early because it hitvisitedLimit, it is indicated through the relationTotalHits.Relation.GREATER_THAN_OR_EQUAL_TO.The behavior is undefined if the given field doesn't have KNN vectors enabled on its
FieldInfo. The return value is nevernull.- Specified by:
searchin classKnnVectorsReader- Parameters:
field- the vector field to searchtarget- the vector-valued queryk- the number of docs to returnacceptDocs-Bitsthat represents the allowed documents to match, ornullif they are all allowed to match.visitedLimit- the maximum number of nodes that the search is allowed to visit- Returns:
- the k nearest neighbor documents, along with their (searchStrategy-specific) scores.
- Throws:
java.io.IOException
-
checkIntegrity
public void checkIntegrity() throws java.io.IOExceptionDescription copied from class:KnnVectorsReaderChecks consistency of this reader.Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value against large data files.
- Specified by:
checkIntegrityin classKnnVectorsReader- Throws:
java.io.IOException
-
ramBytesUsed
public long ramBytesUsed()
Description copied from interface:AccountableReturn the memory usage of this object in bytes. Negative values are illegal.
-
close
public void close() throws java.io.IOException- Throws:
java.io.IOException
-
readInt
private int readInt(IndexInput in, BytesRef field) throws java.io.IOException
- Throws:
java.io.IOException
-
readLong
private long readLong(IndexInput in, BytesRef field) throws java.io.IOException
- Throws:
java.io.IOException
-
readString
private java.lang.String readString(IndexInput in, BytesRef field) throws java.io.IOException
- Throws:
java.io.IOException
-
startsWith
private boolean startsWith(BytesRef prefix)
-
parseInt
private int parseInt(BytesRef prefix)
-
parseLong
private long parseLong(BytesRef prefix)
-
stripPrefix
private java.lang.String stripPrefix(BytesRef prefix)
-
-