文章
· 七月 1 阅读大约需 2 分钟

新数据类型 VECTOR 的限制

在 OEX 最近一次编程竞赛之后,我有一些令人惊讶的发现。
几乎所有的应用程序都是基于人工智能与预制 Python 模块的结合。
但深入研究后发现,所有示例都使用了 IRIS 的相同技术组件。

从 IRIS 的角度来看,无论是搜索文本还是搜索图像或其他模式都是一样的。 其底层基本都是一样的。

          这让我想起了我家里的情况。我的妻子和女儿对家里的大量裙子、衬衫和其他衣服的信息进行了整理。
          但无论如何进行整理、分类、归档,我依然通过和我的妻子和女儿说话,来确定我的穿着。
           无论怎样包装,其结果都是如此。

回到这次竞赛比赛:
同样的 IRIS 技术内容,却有很多花哨的包装。
每个人都在同一条高速公路上奔跑。没有人提到它有什么限制。

于是我试着深入挖掘,找出新数据类型 VECTOR 的使用限制。
所有向量都有两个基本参数
  - 静态 DATATYPE:"整型integer"(或 "int")、"double"、"十进制decimal"、"字符串 "和 "时间戳"。
  - 半动态 LEN(gth): > 0 通常也称为 POSITION;纯整数。

这个 LEN/POSITION 参数就相当于vector的数学维度。
当然,在爱因斯坦的宇宙中,根据他的相对论,你可能只需要 4 个维度或更少。
即使是 60 年代提出的宇宙弦理论也没有超过 11...12 维。
但所有预制好的文本分析解决方案软件包都使用 238、364、>1200、.... 等维度甚至更多。

那么:IRIS 对可能的position设定的限制是什么?官方文档没有给出答案, 于是我打开终端窗口,尝试了下面代码:

for i=1:1 set $vector(test,I,"int")=i
;; very fast
<VECTOR>
zwrite i
i=65537

我尝试了所有的数据类型:这个限制的值是65536

所以这个长度就是 数字类型的长度*65536, 很明显这个比<MAXSTRING>的限制要小。

但是,如果字符串类型的大小有一个重要的维度,会发生什么?

结果令人印象深刻: 
我在 65536 个position和 3.600.000 bytes 的字符串中取得了成功.
测试字符串比 <MAXSTRING>的设定少了几KB
也就是说,在单个 VECTOR 中的大小是 225.000 MB!
我无法想象这是如何做到的。

毫无疑问,处理这个不寻常的庞然大物需要时间,你必须等待足够长的时间才能获取访问结果。
但它表明,数据类型 VECTOR 能够满足所有实际需求
不受设计的限制。

祝您在使用 VECTOR 时取得成功。

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