Interface BlockLoaderExpression

All Known Implementing Classes:
CosineSimilarity, DotProduct, Hamming, L1Norm, L2Norm, Length, VectorSimilarityFunction

public interface BlockLoaderExpression
Expression that can be "pushed" into value loading. Most of the time we load values into Blocks and then run the expressions on them, but sometimes it's worth short-circuiting this process and running the expression in the tight loop we use for loading:
  • V_COSINE(vector, [constant_vector]) - vector is ~512 floats and V_COSINE is one double. We can find the similarity without any copies if we combine.
  • ST_CENTROID(shape) - shapes can be quite large. Centroids are just one point.
  • LENGTH(string) - strings can be quite long, but string length is always an int. For more fun, keywords are usually stored using a dictionary, and it's fairly easy to optimize running LENGTH once per dictionary entry.
  • MV_COUNT(anything) - counts are always integers.
  • MV_MIN and MV_MAX - loads much fewer data for multivalued fields.