class Neighbor::Type::Sparsevec
def cast_value(value)
def cast_value(value) if value.is_a?(SparseVector) value elsif value.is_a?(String) SparseVector.from_text(value) elsif Utils.array?(value) value = SparseVector.new(value.to_a) else raise "can't cast #{value.class.name} to sparsevec" end end
def serialize(value)
def serialize(value) if value.is_a?(SparseVector) value = "{#{value.indices.zip(value.values).map { |i, v| "#{i.to_i + 1}:#{v.to_f}" }.join(",")}}/#{value.dimensions.to_i}" end super(value) end
def type
def type :sparsevec end