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。