文章
· 4 hr 前 阅读大约需 4 分钟

在InterSystems ObjectScript中使用 VECTORs

迄今为止,我看到的大多数使用向量vector的示例,将它只作为 SQL 中的一种功能,尤其是围绕 VECTOR_Search 的 3 个函数。
* TO_VECTOR()
* vector_dot_product ()
* vector_cosine ()

iris-vector-search 演示包中隐藏着一个非常有用的摘要。
从那里,你可以通过多个链接找到所需的一切。

我还缺少更多的 VECTOR 方法,于是在 Idea Portal 上提出了相关请求。

接着,我想起每个 SQL 方法或存储过程都有一堆 ObjectScript 代码。
于是我开始搜索,下面就是我的研究的一些总结:

%Library.Vector 是对新数据类型的核心描述
      这是一种复杂的结构,就像对象或 %DynamicObjects 或 $Bit Expressions 一样,需要特定的方式去访问。
我们还可以看到 2 个必备参数: 
      * DATATTYPE - 一旦设置就不能更改。 可接受的类型:  "整数integer"(或 "int")、"双精度浮点double"、"十进制decimal"、"字符串 "和 "时间戳"。
      * LEN >0 时,可以增长,但绝对不能缩小

$vector() / $ve() 是矢量访问的基本方法
      * 设置矢量数据 >>> SET $VE(. . .) = val
      * 返回矢量数据 >>> WRITE $VE(. . ) , SET var=$VE(. . ) 
          提示:单个位置返回值,但从::到位置返回另一个矢量!
      * 删除矢量数据 >> KILL $VE(. . .) 
      所有 3 个参数都需要至少 1 个位置参数。你可以把它理解为维度。

$isvector()显然是在开始操作前检查格式是否正确。

$vectorop() / $vop() 包括与向量有关的所有其他函数
    调用参数通常为(operation、vector)
某些operation提供可选的 bitxpr。它标记了要排除/包含的位置/维数。

例如: 
- 你只想对 x 轴和 y 轴进行操作,而不想对 z 轴进行操作。

单向量操作符

    Aggregate Operations 汇总操作
      * "count"
      * "max"
      * "min"
      * "sum"
    Filter Operations 过滤器操作
      * "defined"
      * "undefined"
      * "<"
      * "<="
      * ">"
      * ">="
      * "="
      * "!="
      * "between"
     Numeric Operations 数字相关操作
      * "+"
      * "-"
      * "/"
      * "*"
      * "**"
      * "#"
      * "e-"
      * "e/"
      * "ceiling"
      * "floor"
     String Operations 字符串相关操作
      * "_"
      * "e_"
      * "lower"
      * "upper"
      * "substring"
      * "trim"
      * "triml"
      * "trimr"
    Grouping Operations 组相关操作
     * "group"
     * "countgb"
   Miscellaneous Operations 杂项操作
     * "convert"
     * "length"
     * "mask"
     * "positions"
     * "set"
   Informative Operations 信息化业务
    * "bytesize"
    * "type"

多向量操作符(通常为两个操作)

    Vector-wise Filter Operations
       * "v<"
       * "v<="
       * "v>"
       * "v>="
       * "v="
       * "v!="
    Vector-wise Arithmetic Operations
      * "v+"
      * "v-"
      * "v/"
      * "v*"
      * "v**"
      * "v#"
    Vector Concatenation
      * "v_"
    Vector Grouping
      * "countg"
      * "maxg"
      * "ming"
      * "sumg"
    Vector Merge
     * "vset"

你看,现在已经有了一套丰富的工具。
如果你详细研究文档,结果的目的或优势可能不会立即显现出来。

不过,我希望你能对目前可用的工具有一个大致的了解。

讨论 (0)1
登录或注册以继续