反向索引

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

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

索引声明:属性code

要使字段创建索引,增长一个[index]属性:htm

cell MyCell
{
    [Index]
    string Name;
}
索引

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

能够在嵌套字段上声明索引,例如:get

struct leaf
{
    [Index]
    string data;
}

cell root
{
    leaf substructure;
}
string

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

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

子串查询:

对于索引字段,咱们能够经过调用带有字段标识符和查询字符串方法 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

相关文章
相关标签/搜索