反向索引

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

相關文章
相關標籤/搜索