summaryrefslogtreecommitdiffstats
path: root/config-model/src/test/derived/twostreamingstructs/streamingstruct.sd
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/test/derived/twostreamingstructs/streamingstruct.sd')
-rw-r--r--config-model/src/test/derived/twostreamingstructs/streamingstruct.sd183
1 files changed, 183 insertions, 0 deletions
diff --git a/config-model/src/test/derived/twostreamingstructs/streamingstruct.sd b/config-model/src/test/derived/twostreamingstructs/streamingstruct.sd
new file mode 100644
index 00000000000..dabe9837af8
--- /dev/null
+++ b/config-model/src/test/derived/twostreamingstructs/streamingstruct.sd
@@ -0,0 +1,183 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search streamingstruct {
+
+ document streamingstruct {
+ field coupleof type string {
+ indexing: index | summary
+ }
+
+ field normalfields type string {
+ indexing: index | summary
+ summary anothersummaryfield {
+ source: normalfields
+ }
+ }
+
+ struct s1 {
+ field f1 type string { }
+ field f1s type string { match: substring }
+ field f2 type int { }
+ field f3 type double { }
+ # Allow default matchtypes in struct. Can be overridden.
+ # No index/attribute related stuff. It is only a datatype definition.
+ }
+ struct ns1 {
+ field nf1 type s1 { }
+ field nf1s type s1 { match: substring }
+ field nf2 type string { }
+ # May specify nested structs.
+ }
+
+ field a type s1 {
+ indexing: summary
+ # Will generate attribute a.f1, a.f1s, a.f2, a.f3
+ # with datatypes preserved.
+ # No customisation.
+ # a will be a synonym for all (a.*)
+ }
+ field m type map<long, string> {
+ indexing: summary
+ # Will generate attribute m.key, m.value
+ # with datatypes preserved.
+ # m will be a synonym for all (m.*)
+ }
+ field b type s1 {
+ indexing: index | summary
+ # Will generate index b.f1, b.f1s, b.f2, b.f3
+ # with datatypes preserved if backend allows.
+ # No customisation.
+ # b will be synonym for all (b.*).
+ }
+ field c type s1 {
+ struct-field f1 {
+ # Whatever you normally write in a field declaration
+ indexing: attribute | summary # -> Generates attribute c.f1
+ }
+ struct-field f1s {
+ indexing: index | summary # -> c.f1s
+ match: prefix
+ }
+ struct-field f3 {
+ indexing: index | summary # -> c.f3
+ }
+ # attribute c will be synonym for c.f1.
+ # Index c will be synonym for c.f1s OR c.f3.
+ # Indexed search can handle that however they want.
+ }
+ field c2 type s1 {
+ struct-field f1 {
+ # Whatever you normally write in a field declaration
+ indexing: attribute | summary # -> Generates attribute c2.f1
+ }
+ struct-field f1s {
+ indexing: index | summary # -> c2.f1s
+ match: suffix
+ }
+ struct-field f2 {
+ indexing: index | summary # -> c2.f2
+ }
+ struct-field f3 {
+ indexing: index | summary # -> c2.f3
+ }
+ }
+ field c3 type s1 {
+ # Uses all sub fields, but not summary for all.
+ struct-field f1 {
+ indexing: attribute | summary
+ }
+ struct-field f1s {
+ indexing: index
+ match: prefix
+ }
+ struct-field f2 {
+ indexing: index | summary
+ }
+ struct-field f3 {
+ indexing: index | summary
+ }
+ }
+ field n type ns1 {
+ struct-field nf1 {
+ struct-field f1 {
+ indexing: index | summary
+ }
+ struct-field f1s {
+ indexing: index | summary
+ match: prefix
+ }
+ struct-field f3 {
+ indexing: index
+ }
+ }
+ struct-field nf1s {
+ indexing: index | summary
+ }
+ struct-field nf2 {
+ indexing: index | summary
+ }
+ # Will generate indexes n.nf1.f1, n.nf1.f1s, n.nf1.f3,
+ # n.nf1s.f1, n.nf1s.f1s, n.nf1s.f2, n.nf1s.f3
+ # and n.nf2.
+ # n will be synonym for all 8,
+ # n.nf1 will be synonym for the first 3 and
+ # n.nf1s will be synonym for the next 4
+ }
+
+ field array1 type array<s1> {
+ indexing: summary
+ }
+ field array2 type array<s1> {
+ indexing: index | summary
+ }
+ field array3 type array<s1> {
+ struct-field f1 {
+ indexing: attribute | summary # -> Generates attribute array3.f1
+ }
+ struct-field f1s {
+ indexing: index | summary # -> array3.f1s
+ match: prefix
+ }
+ struct-field f3 {
+ indexing: index | summary # -> array3.f3
+ }
+ }
+ field subject type s1 {
+ struct-field f1 {
+ indexing: summary
+ summary subject {
+ source:subject.f1
+ }
+ }
+ }
+ field d type s1 {
+ indexing: index
+ # override matching for all subfields
+ match: prefix
+ }
+ field e type s1 {
+ indexing: index
+ # override matching for all subfields
+ match: substring
+ }
+ field f type s1 {
+ indexing: index
+ # override matching for all subfields
+ match: suffix
+ }
+ field g type string {
+ indexing: index | summary
+ summary: dynamic
+ }
+ }
+
+ document-summary summ {
+ summary snippet type string {
+ dynamic
+ source: a.f1, b.f2
+ }
+ summary snippet2 type string {
+ source: a.f1, b.f1, b.f2
+ }
+ }
+
+}