• 反向索引


    GE为单元格字段值的子字符串查询提供了内置的反向索引支持。GE只索引TSL中标记为[index]属性的单元格字段值。

    只有具有字符串类型的单元格字段才能被索引。有两种情况。1)单元格字段的类型为string。在子字符串查询处理期间,如果其索引字段的值包含查询的子字符串,则匹配单元格。2)单元格字段是字符串的集合,例如,List<string> 或者 List<List<string>>。在 查询处理期间,只要集合中的任何字符串包含查询的子字符串,单元格就会匹配。

    索引声明:属性

    要使字段建立索引,增加一个[index]属性:

    cell MyCell
    {
        [Index]
        string Name;
    }

    index属性仅对其类型为字符串或字符串集合的字段有效。

    可以在嵌套字段上声明索引,例如:

    struct leaf
    {
        [Index]
        string data;
    }

    cell root
    {
        leaf substructure;
    }

    由于在GE中没有办法全局的识别这样的结构,因此struct leaf上的index属性单独不会生成有效的索引。只有当这样的机构包含在一个单元格 root, root.leaf.data,形成一个有效的索引。形成一个有效的索引。允许在子结构的子结构中包含索引字段,因此,cell.inner_1.inner_2. ... .leaf.data是可加索引的。

    如果包含一个或多个索引字段的子结构包含在多个单元格结构中,那么将为每个单元格生成一个索引,并且索引彼此独立。

    子串查询:

    对于索引字段,我们可以通过调用带有字段标识符和查询字符串方法 Index.SubstringQuery。一个字段标识符,例如:Index.root.leaf.data,是否在索引类中定义了自动生成的嵌套类。它用于指定我们要查询的单元格字段:Index.root.leaf.data 标识了根单元中的叶子结构中的数据字段。Index.SubstringQuery(Index.root.leaf.data, "query string")返回单元格id列表。每个root.leaf.data字段值包含“query string”的数据字段值。

    Index.SubstringQuery 方法同样接受一系列字符串查询,给定一个查询字符串序列q1, q2, ..., qn,这个方法将根据*q1*q2*...*qn*执行通配符搜索,它表示所有的字符串q1, q2, ..., qn是按照序列中指定的顺序匹配字符串的子字符串。

    索引更新:

    如果单元格不断更新,对索引字段的更新可能不会立即反映在索引中。也就是说,子字符串查询可能有假负数-单元格当前是匹配的,但尚未包含在索引中。为了排除假正数(以前匹配的单元格现在不匹配),我们需要在获得匹配的单元格id后再次检查单元格字段值。

    系统定期更新索引。要手动更新索引,可以在特定字段标识符上调用Index.UpdateSubstringIndex

    LINQ 集成

    反向索引子系统与LINQ集成。爱选择器上的LINQ查询中,GE转换字符串的调用。在索引字段中包含反向索引查询。同样的规则适用于IEnumerable<string>.Contains.

    更多的细节请查看LINQ

  • 相关阅读:
    梯度下降进阶
    梯度下降基础
    python---matplotlib
    python---numpy
    浅析Jupyter Notebook
    anaconda安装
    机器学习---导学
    python---线程与进程
    mapping values are not allowed in this context at line 115 column 10
    laravel进行单元测试的时候如何模拟数据库以及mockery的调用
  • 原文地址:https://www.cnblogs.com/v-haoz/p/9668119.html
Copyright © 2020-2023  润新知