add hiddenIndexFields on buildGlobalIndex.
Project: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/commit/124003d9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/tree/124003d9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/diff/124003d9 Branch: refs/heads/master Commit: 124003d9b68d2ec2cd895ad99e5bb6cb6822eead Parents: 4e085e4 Author: DO YUNG YOON <[email protected]> Authored: Fri Jul 28 19:20:38 2017 +0900 Committer: DO YUNG YOON <[email protected]> Committed: Fri Jul 28 19:20:38 2017 +0900 ---------------------------------------------------------------------- .../scala/org/apache/s2graph/core/Management.scala | 9 +++++---- .../apache/s2graph/core/index/IndexProvider.scala | 2 ++ .../s2graph/core/index/IndexProviderTest.scala | 15 +++++++++++++-- .../s2graph/core/tinkerpop/S2GraphProvider.scala | 1 + .../core/tinkerpop/structure/S2GraphTest.scala | 5 +++-- 5 files changed, 24 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/124003d9/s2core/src/main/scala/org/apache/s2graph/core/Management.scala ---------------------------------------------------------------------- diff --git a/s2core/src/main/scala/org/apache/s2graph/core/Management.scala b/s2core/src/main/scala/org/apache/s2graph/core/Management.scala index 6713baf..6e2667f 100644 --- a/s2core/src/main/scala/org/apache/s2graph/core/Management.scala +++ b/s2core/src/main/scala/org/apache/s2graph/core/Management.scala @@ -19,12 +19,13 @@ package org.apache.s2graph.core -import org.apache.s2graph.core.GraphExceptions.{LabelNameTooLongException, InvalidHTableException, LabelAlreadyExistException, LabelNotExistException} +import org.apache.s2graph.core.GraphExceptions.{InvalidHTableException, LabelAlreadyExistException, LabelNameTooLongException, LabelNotExistException} import org.apache.s2graph.core.Management.JsonModel.{Index, Prop} import org.apache.s2graph.core.mysqls._ import org.apache.s2graph.core.types.HBaseType._ import org.apache.s2graph.core.types._ import org.apache.s2graph.core.JSONParser._ +import org.apache.s2graph.core.index.IndexProvider import org.apache.s2graph.core.utils.logger import play.api.libs.json.Reads._ import play.api.libs.json._ @@ -349,10 +350,10 @@ class Management(graph: S2Graph) { } def buildGlobalIndex(name: String, propNames: Seq[String]): GlobalIndex = { - GlobalIndex.findBy(name) match { + GlobalIndex.findBy(name, false) match { case None => - val idxId = GlobalIndex.insert(name, propNames) - GlobalIndex.findBy(name).get + val idxId = GlobalIndex.insert(name, propNames ++ IndexProvider.hiddenIndexFields) + GlobalIndex.findBy(name, false).get case Some(oldIndex) => oldIndex } } http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/124003d9/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala ---------------------------------------------------------------------- diff --git a/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala b/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala index 360ea65..7f2602f 100644 --- a/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala +++ b/s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala @@ -47,6 +47,8 @@ object IndexProvider { val labelField = "_label_" val serviceField = "_service_" val serviceColumnField = "_serviceColumn_" + + val hiddenIndexFields = Set(vidField, eidField, labelField, serviceField, serviceColumnField) val hitsPerPage = 100000 def apply(config: Config): IndexProvider = { http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/124003d9/s2core/src/test/scala/org/apache/s2graph/core/index/IndexProviderTest.scala ---------------------------------------------------------------------- diff --git a/s2core/src/test/scala/org/apache/s2graph/core/index/IndexProviderTest.scala b/s2core/src/test/scala/org/apache/s2graph/core/index/IndexProviderTest.scala index d098458..480f7a2 100644 --- a/s2core/src/test/scala/org/apache/s2graph/core/index/IndexProviderTest.scala +++ b/s2core/src/test/scala/org/apache/s2graph/core/index/IndexProviderTest.scala @@ -20,11 +20,14 @@ package org.apache.s2graph.core.index import org.apache.s2graph.core.Integrate.IntegrateCommon -import org.apache.s2graph.core.S2Vertex +import org.apache.s2graph.core.{Query, QueryParam, S2Vertex, Step} import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer -import org.apache.tinkerpop.gremlin.process.traversal.P +import org.apache.tinkerpop.gremlin.process.traversal.{Order, P} import org.apache.s2graph.core.mysqls._ import org.apache.s2graph.core.types.{InnerVal, InnerValLikeWithTs} +import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper +import org.apache.tinkerpop.gremlin.structure.T + import scala.collection.JavaConversions._ class IndexProviderTest extends IntegrateCommon { @@ -218,4 +221,12 @@ class IndexProviderTest extends IntegrateCommon { println(s"[[QueryString]: ${queryString}") } + test("has label") { + // has("song", "name", "OH BOY").out("followedBy").out("followedBy").order.by("performances").by("songType", Order.decr) + val hasContainers = Seq(new HasContainer(T.label.getAccessor, P.eq("song")), + new HasContainer("name", P.eq("OH BOY"))) + val queryString = IndexProvider.buildQueryString(hasContainers) + println(s"[[QueryString]: ${queryString}") + + } } http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/124003d9/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala ---------------------------------------------------------------------- diff --git a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala index 00768b3..3157e18 100644 --- a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala +++ b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala @@ -27,6 +27,7 @@ import org.apache.s2graph.core.GraphExceptions.LabelNotExistException import org.apache.s2graph.core.Management.JsonModel.Prop import org.apache.s2graph.core.S2Graph.{DefaultColumnName, DefaultServiceName} import org.apache.s2graph.core._ +import org.apache.s2graph.core.index.IndexProvider import org.apache.s2graph.core.mysqls.{ColumnMeta, Label, Service, ServiceColumn} import org.apache.s2graph.core.types.{HBaseType, InnerVal, VertexId} import org.apache.s2graph.core.utils.logger http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/124003d9/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala ---------------------------------------------------------------------- diff --git a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala index 60b48d2..badfbfe 100644 --- a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala +++ b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala @@ -41,7 +41,7 @@ class S2GraphTest extends FunSuite with Matchers with TestCommonWithModels { initTests() val g = new S2Graph(config) - lazy val gIndex = management.buildGlobalIndex("S2GraphTest", Seq("weight")) + lazy val gIndex = management.buildGlobalIndex("S2GraphTest2", Seq("weight")) def printEdges(edges: Seq[Edge]): Unit = { edges.foreach { edge => logger.debug(s"[FetchedEdge]: $edge") @@ -466,7 +466,8 @@ class S2GraphTest extends FunSuite with Matchers with TestCommonWithModels { val e12 = v6.addEdge("created", v3, "weight", Double.box(0.2)) - val ls = graph.traversal().E().has("weight", P.eq(Double.box(0.5))) + val ls = graph.traversal().E().has("knows", "weight", P.eq(Double.box(0.5))) + // return graph.traversal.V().hasLabel("person").has("age", P.not(P.lte(10).and(P.not(P.between(11, 20)))).and(P.lt(29).or(P.eq(35)))).values("name") val l = ls.toList println(s"[Size]: ${l.size}")
