aboutsummaryrefslogtreecommitdiffstats
path: root/vespa-documentgen-plugin/src
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-06-03 11:03:50 +0200
committerHarald Musum <musum@verizonmedia.com>2021-06-03 11:03:50 +0200
commitaab0425ec1b2d683708781f9247c4b164b04739d (patch)
treee7f4c3dd58ee44cb00be34f930fbf7e8d8a4df64 /vespa-documentgen-plugin/src
parent2a85cadde1ed663f1ba04cfede6ce84986b79007 (diff)
Move test data
Diffstat (limited to 'vespa-documentgen-plugin/src')
-rw-r--r--vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java15
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/complex/book.sd88
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/complex/common.sd40
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/complex/common2.sd9
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/complex/music2.sd74
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/complex/music3.sd11
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/complex/sombrerowebdoc.sd.FOO73
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/complex/video.sd49
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/localapp/book.sd89
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/localapp/common.sd45
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/localapp/music.sd70
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/localapp/video.sd54
-rw-r--r--vespa-documentgen-plugin/src/test/resources/schemas/music/music.sd53
13 files changed, 664 insertions, 6 deletions
diff --git a/vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java b/vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java
index a65701fe261..72a3209a8fd 100644
--- a/vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java
+++ b/vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java
@@ -1,11 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa;
import com.yahoo.document.DataType;
import com.yahoo.document.StructDataType;
import com.yahoo.document.WeightedSetDataType;
import com.yahoo.searchdefinition.Search;
-import org.junit.Ignore;
import org.junit.Test;
import java.io.File;
@@ -16,13 +15,17 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class DocumentGenTest {
+ private static final File schemasDir = new File("src/test/resources/schemas/");
+ private static final File musicSchemaDir = new File(schemasDir, "music/");
+ private static final File complexSchemaDir = new File(schemasDir, "complex/");
+ private static final File localappSchemaDir = new File(schemasDir, "localapp/");
@Test
public void testMusic() {
DocumentGenMojo mojo = new DocumentGenMojo();
- mojo.execute(new File("etc/music/"), new File("target/generated-test-sources/vespa-documentgen-plugin/"), "com.yahoo.vespa.document");
+ mojo.execute(musicSchemaDir, new File("target/generated-test-sources/vespa-documentgen-plugin/"), "com.yahoo.vespa.document");
Map<String, Search> searches = mojo.getSearches();
- assertEquals(searches.size(),1);
+ assertEquals(searches.size(), 1);
assertEquals(searches.get("music").getDocument("music").getField("title").getDataType(), DataType.STRING);
assertEquals(searches.get("music").getDocument("music").getField("eitheror").getDataType(), DataType.BOOL);
}
@@ -30,7 +33,7 @@ public class DocumentGenTest {
@Test
public void testComplex() {
DocumentGenMojo mojo = new DocumentGenMojo();
- mojo.execute(new File("etc/complex/"), new File("target/generated-test-sources/vespa-documentgen-plugin/"), "com.yahoo.vespa.document");
+ mojo.execute(complexSchemaDir, new File("target/generated-test-sources/vespa-documentgen-plugin/"), "com.yahoo.vespa.document");
Map<String, Search> searches = mojo.getSearches();
assertEquals(searches.get("video").getDocument("video").getField("weight").getDataType(), DataType.FLOAT);
assertEquals(searches.get("book").getDocument("book").getField("sw1").getDataType(), DataType.FLOAT);
@@ -44,7 +47,7 @@ public class DocumentGenTest {
@Test
public void testLocalApp() {
DocumentGenMojo mojo = new DocumentGenMojo();
- mojo.execute(new File("etc/localapp/"), new File("target/generated-test-sources/vespa-documentgen-plugin/"), "com.yahoo.vespa.document");
+ mojo.execute(localappSchemaDir, new File("target/generated-test-sources/vespa-documentgen-plugin/"), "com.yahoo.vespa.document");
Map<String, Search> searches = mojo.getSearches();
assertEquals(searches.get("video").getDocument("video").getField("weight").getDataType(), DataType.FLOAT);
assertTrue(searches.get("book").getDocument("book").getField("mystruct").getDataType() instanceof StructDataType);
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/complex/book.sd b/vespa-documentgen-plugin/src/test/resources/schemas/complex/book.sd
new file mode 100644
index 00000000000..6d6145cb10b
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/complex/book.sd
@@ -0,0 +1,88 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search book {
+ document book inherits common {
+ struct ss0 {
+ field s0 type string{}
+ field d0 type double{}
+ }
+ struct ss1 {
+ field s1 type string { }
+ field l1 type long { }
+ field i1 type int { }
+ field d1 type double { }
+ field as1 type array<string> { }
+ field al1 type array<long> { }
+ field ss01 type ss0 {}
+ }
+
+ struct ss2 {
+ field s21 type string {}
+ field ss02 type ss0 {}
+ }
+
+ field mystruct type ss1 {
+ }
+
+ field mystruct2 type ss2 {}
+
+ field mywsfloat type weightedset<float> {
+ indexing: attribute
+ }
+
+ field mynestedwsfloat type weightedset<float> {}
+
+ field myarrayint type array<int> {
+ indexing: attribute
+ }
+
+ field stringmap type map<string, string> {
+ }
+
+ field structmap type map<int, ss1> {
+ }
+
+ field mysinglestructarray type array<ss1> {}
+
+ #field mydoublestructarray type array<array<ss1>> {}
+
+ field author type string {
+ bolding: on
+ # index-to: default, author
+ indexing: summary | index
+ }
+ field isbn type string {
+ # index-to: default, isbn
+ indexing: summary | index
+ }
+ field year type int {
+ indexing: summary | index
+ }
+ field description type string {
+ # index-to: default, description
+ indexing: summary | index
+ summary: dynamic
+ }
+ }
+
+ field sw1 type float {
+ indexing {
+ input weight * 6 + input w1 + input w2 | summary;
+ }
+ }
+
+ field didinteger type array<int> {
+ indexing: input did | split " " | for_each { to_int } | attribute
+ }
+
+ rank-profile default {
+ first-phase {
+ expression: nativeRank
+ }
+ }
+ rank-profile rp1 inherits default {
+ #static-rank: weight1
+ }
+ rank-profile rp2 inherits default {
+ #static-rank: weight2
+ }
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/complex/common.sd b/vespa-documentgen-plugin/src/test/resources/schemas/complex/common.sd
new file mode 100644
index 00000000000..e0505eba05b
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/complex/common.sd
@@ -0,0 +1,40 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search common {
+ document common {
+ field uri type string {
+ indexing: summary
+ }
+ field title type string {
+ bolding: on
+ # index-to: default, title
+ indexing: index|summary
+ summary-to: smallsum
+ }
+ field mid type int {
+ indexing: attribute|index|summary
+ }
+ field scorekey type string {
+ indexing: summary
+ }
+ field weight type float {
+ indexing: attribute | summary
+ }
+ field w1 type float {
+ indexing: summary
+ }
+ field w2 type float {
+ indexing: summary
+ }
+ field did type string {
+ indexing: attribute|index|summary
+ }
+ field ew type string {
+ indexing: index|summary
+ }
+ }
+ rank-profile default {
+ first-phase {
+ expression: nativeRank
+ }
+ }
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/complex/common2.sd b/vespa-documentgen-plugin/src/test/resources/schemas/complex/common2.sd
new file mode 100644
index 00000000000..e32d3ed6751
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/complex/common2.sd
@@ -0,0 +1,9 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search common2 {
+ document {
+ field com2 type string {
+
+ }
+ }
+}
+
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/complex/music2.sd b/vespa-documentgen-plugin/src/test/resources/schemas/complex/music2.sd
new file mode 100644
index 00000000000..2e2d96ecdec
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/complex/music2.sd
@@ -0,0 +1,74 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music2 {
+ document music2 inherits common {
+ field artist type string {
+ bolding: on
+ # index-to: default, artist
+ indexing: index|summary
+ }
+ field disp_song type string {
+ indexing: summary
+ }
+ field song type string {
+ # index-to: default, song
+ indexing: index
+ }
+ field isbn type string {
+ bolding: on
+ # index-to: default, isbn
+ indexing: index|summary
+ }
+ field year type int {
+ indexing: attribute|index|summary
+ }
+ annotation recordlabel {}
+
+ annotation person {
+ field name type string { }
+ }
+
+ annotation artist inherits person {
+ field instrument type int { }
+ }
+
+ annotation date {
+ field exacttime type long { }
+ }
+
+ annotation place {
+ field lat type long { }
+ field lon type long { }
+ }
+
+ annotation event {
+ field description type string { }
+ field person type annotationreference<person> { }
+ field date type annotationreference<date> { }
+ field place type annotationreference<place> { }
+ }
+
+ }
+
+ field sw1 type float {
+ indexing {
+ input weight * 6 + input w1 + input w2 | summary;
+ }
+ }
+
+ field didinteger type array<int> {
+ indexing: input did | split " " | for_each { to_int } | attribute
+ }
+
+ rank-profile default {
+ first-phase {
+ expression: nativeRank
+ }
+ }
+ rank-profile rp1 inherits default {
+ #static-rank: weight1
+ }
+ rank-profile rp2 inherits default {
+ #static-rank: weight2
+ }
+
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/complex/music3.sd b/vespa-documentgen-plugin/src/test/resources/schemas/complex/music3.sd
new file mode 100644
index 00000000000..8bd612268df
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/complex/music3.sd
@@ -0,0 +1,11 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music3 {
+ document music3 inherits music2, common2 {
+ field mu3 type string {
+
+ }
+ field pos type position {
+ indexing: attribute
+ }
+ }
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/complex/sombrerowebdoc.sd.FOO b/vespa-documentgen-plugin/src/test/resources/schemas/complex/sombrerowebdoc.sd.FOO
new file mode 100644
index 00000000000..1524e7480a0
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/complex/sombrerowebdoc.sd.FOO
@@ -0,0 +1,73 @@
+search sombrerowebdoc {
+
+ document sombrerowebdoc {
+ version : 0
+
+ struct sombreroattribute {
+ field attributetype type int {}
+ field intvalue type int {}
+ field huffmanindex type int {}
+ field lexicon type string {}
+ field name type string {}
+ field strvalue type string {}
+ }
+
+ annotation sombreroTOKEN { }
+
+ annotation sombreroPHRASE {
+ field prefixused type int {}
+ field suffixused type int {}
+ field attributes type array<sombreroattribute> {}
+ field annotationreferences type array<annotationreference<sombreroTOKEN>> {}
+ }
+
+ struct sombrerocontentfilter {
+ field id type string {}
+ field value type string {}
+ }
+
+ struct sombrerorule {
+ field name type string {}
+ field location type string {}
+ field contentfilters type array<sombrerocontentfilter> {}
+ }
+
+ struct sombrerometrics {
+ field executiontime type double {}
+ }
+
+ struct sombreroextraction {
+ field adjuncts type string {}
+ field metrics type sombrerometrics {}
+ field status type string {}
+ }
+
+
+ field url type string {}
+
+ field raw_html type string {}
+
+ field decoded_html type string {}
+
+ field rules type array<sombrerorule> {}
+
+ field extraction type sombreroextraction {}
+
+ field content_language type string {}
+
+ field dupdetectshinglesketch type string {}
+
+ field mlprisma type string {}
+
+ field raw_bytes type raw {}
+
+ field charset_encoding type string {}
+
+ field meta_language type string {}
+
+ field language type string {}
+
+ field region type string {}
+
+ }
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/complex/video.sd b/vespa-documentgen-plugin/src/test/resources/schemas/complex/video.sd
new file mode 100644
index 00000000000..0b0298a162c
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/complex/video.sd
@@ -0,0 +1,49 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search video {
+ document video inherits common {
+ field director type string {
+ bolding: on
+ indexing: index|summary
+ }
+ field disp_actor type string {
+ bolding: on
+ indexing: index|summary
+ }
+ field actor type string {
+ bolding: on
+ indexing: index|summary
+ }
+ field fmt type string {
+ indexing: index|summary
+ }
+ field isbn type string {
+ bolding: on
+ indexing: index|summary
+ }
+ field year type int {
+ indexing: attribute|index|summary
+ }
+ }
+
+ field sw1 type float {
+ indexing {
+ input weight * 6 + input w1 + input w2 | summary;
+ }
+ }
+
+ field didinteger type array<int> {
+ indexing: input did | split " " | for_each { to_int } | attribute
+ }
+
+ rank-profile default {
+ first-phase {
+ expression: file:non-existing.expression
+ }
+ }
+ rank-profile rp1 inherits default {
+ #static-rank: weight1
+ }
+ rank-profile rp2 inherits default {
+ #static-rank: weight2
+ }
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/localapp/book.sd b/vespa-documentgen-plugin/src/test/resources/schemas/localapp/book.sd
new file mode 100644
index 00000000000..72faa934aa6
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/localapp/book.sd
@@ -0,0 +1,89 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search book {
+ document book inherits common {
+ struct ss0 {
+ field s0 type string{}
+ field d0 type double{}
+ }
+ struct ss1 {
+ field s1 type string { }
+ field l1 type long { }
+ field i1 type int { }
+ field d1 type double { }
+ field as1 type array<string> { }
+ field al1 type array<long> { }
+ field ss01 type ss0 {}
+ }
+
+ struct ss2 {
+ field s21 type string {}
+ field ss02 type ss0 {}
+ }
+
+ field mystruct type ss1 {
+ }
+
+ field mystruct2 type ss2 {}
+
+ field mywsfloat type weightedset<float> {
+ indexing: attribute
+ }
+
+ field myarrayint type array<int> {
+ indexing: attribute
+ }
+
+ field mytriplearray type array<array<array<int>>> {}
+
+ field stringmap type map<string, string> {
+ }
+
+ field structmap type map<int, ss1> {
+ }
+
+ field mysinglestructarray type array<ss1> {}
+ #field mydoublestructarray type array<array<ss1>> {}
+
+ field author type string {
+ bolding: on
+ # index-to: default, author
+ indexing: summary | index
+ }
+ field isbn type string {
+ # index-to: default, isbn
+ indexing: summary | index
+ }
+ field year type int {
+ indexing: summary | index
+ }
+ field description type string {
+ # index-to: default, description
+ indexing: summary | index
+ summary: dynamic
+ }
+
+ field myraw type raw {}
+ }
+
+ field sw1 type float {
+ indexing {
+ input weight * 6 + input w1 + input w2 | summary;
+ }
+ }
+
+ field didinteger type array<int> {
+ indexing: input did | split " " | for_each { to_int } | attribute
+ }
+
+ rank-profile default {
+ first-phase {
+ expression: nativeRank
+ }
+ }
+ rank-profile rp1 inherits default {
+ #static-rank: weight1
+ }
+ rank-profile rp2 inherits default {
+ #static-rank: weight2
+ }
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/localapp/common.sd b/vespa-documentgen-plugin/src/test/resources/schemas/localapp/common.sd
new file mode 100644
index 00000000000..724897b4e7f
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/localapp/common.sd
@@ -0,0 +1,45 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search common {
+ document common {
+ field uri type string {
+ indexing: summary
+ }
+ field title type string {
+ bolding: on
+ # index-to: default, title
+ indexing: index|summary
+ summary-to: smallsum
+ }
+ field mid type int {
+ indexing: attribute|index|summary
+ }
+ field scorekey type string {
+ indexing: summary
+ }
+ field weight type float {
+ indexing: attribute|summary
+ }
+ field w1 type float {
+ indexing: summary
+ }
+ field w2 type float {
+ indexing: summary
+ }
+ field did type string {
+ indexing: attribute|index|summary
+ }
+ field ew type string {
+ indexing: index|summary
+ }
+ annotation date {
+ field exacttime type long { }
+ }
+
+ annotation emptyannotation {}
+ }
+ rank-profile default {
+ first-phase {
+ expression: nativeRank
+ }
+ }
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/localapp/music.sd b/vespa-documentgen-plugin/src/test/resources/schemas/localapp/music.sd
new file mode 100644
index 00000000000..e00e046f511
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/localapp/music.sd
@@ -0,0 +1,70 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music inherits common {
+ field artist type string {
+ bolding: on
+ # index-to: default, artist
+ indexing: index|summary
+ }
+ field disp_song type string {
+ indexing: summary
+ }
+ field song type string {
+ # index-to: default, song
+ indexing: index
+ }
+ field isbn type string {
+ bolding: on
+ # index-to: default, isbn
+ indexing: index|summary
+ }
+ field year type int {
+ indexing: attribute|index|summary
+ }
+ annotation recordlabel {}
+
+ annotation person {
+ field name type string { }
+ }
+
+ annotation artist inherits person {
+ field instrument type int { }
+ }
+
+ annotation place {
+ field lat type long { }
+ field lon type long { }
+ }
+
+ annotation event {
+ field description type string { }
+ field person type annotationreference<person> { }
+ field date type annotationreference<date> { }
+ field place type annotationreference<place> { }
+ }
+ }
+
+ field sw1 type float {
+ indexing {
+ input weight * 6 + input w1 + input w2 | summary;
+ }
+ }
+
+ field didinteger type array<int> {
+ indexing: input did | split " " | for_each { to_int } | attribute
+ }
+
+ rank-profile default {
+ first-phase {
+ expression: nativeRank
+ }
+ }
+ rank-profile rp1 inherits default {
+ #static-rank: weight1
+ }
+ rank-profile rp2 inherits default {
+ #static-rank: weight2
+ }
+
+
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/localapp/video.sd b/vespa-documentgen-plugin/src/test/resources/schemas/localapp/video.sd
new file mode 100644
index 00000000000..fc7f58298c1
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/localapp/video.sd
@@ -0,0 +1,54 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search video {
+ document video inherits common {
+ field director type string {
+ bolding: on
+ # index-to: default, director
+ indexing: index|summary
+ }
+ field disp_actor type string {
+ bolding: on
+ # index-to: default, disp_actor
+ indexing: index|summary
+ }
+ field actor type string {
+ bolding: on
+ # index-to: default, actor
+ indexing: index|summary
+ }
+ field fmt type string {
+ # index-to: default, fmt
+ indexing: index|summary
+ }
+ field isbn type string {
+ bolding: on
+ # index-to: default, isbn
+ indexing: index|summary
+ }
+ field year type int {
+ indexing: attribute|index|summary
+ }
+ }
+
+ field sw1 type float {
+ indexing {
+ input weight * 6 + input w1 + input w2 | summary;
+ }
+ }
+
+ field didinteger type array<int> {
+ indexing: input did | split " " | for_each { to_int } | attribute
+ }
+
+ rank-profile default {
+ first-phase {
+ expression: nativeRank
+ }
+ }
+ rank-profile rp1 inherits default {
+ #static-rank: weight1
+ }
+ rank-profile rp2 inherits default {
+ #static-rank: weight2
+ }
+}
diff --git a/vespa-documentgen-plugin/src/test/resources/schemas/music/music.sd b/vespa-documentgen-plugin/src/test/resources/schemas/music/music.sd
new file mode 100644
index 00000000000..5295b1bf449
--- /dev/null
+++ b/vespa-documentgen-plugin/src/test/resources/schemas/music/music.sd
@@ -0,0 +1,53 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# A basic search definition - called music, should be saved to music.sd
+search music {
+
+ # It contains one document type only - called music as well
+ document music {
+
+ field title type string {
+ indexing: summary | index # How this field should be indexed
+ weight: 75 # Ranking importancy of this field, used by the built in nativeRank feature
+ }
+
+ field artist type string {
+ indexing: summary | attribute | index
+ weight: 25
+ }
+
+ field year type int {
+ indexing: summary | attribute
+ }
+
+ # Increase query
+ field popularity type int {
+ indexing: summary | attribute
+ }
+
+ field eitheror type bool {
+ indexing: summary | attribute
+ }
+
+ field url type uri {
+ indexing: summary | index
+ }
+
+ }
+
+ rank-profile default inherits default {
+ first-phase {
+ expression: nativeRank(title,artist) + attribute(popularity)
+ }
+
+ }
+
+ rank-profile textmatch inherits default {
+ first-phase {
+ expression: nativeRank(title,artist)
+ }
+
+ }
+
+
+
+}