You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@s2graph.apache.org by st...@apache.org on 2018/04/23 04:29:35 UTC

[3/8] incubator-s2graph git commit: refactor search

refactor search


Project: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/commit/ea26552f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/tree/ea26552f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/diff/ea26552f

Branch: refs/heads/master
Commit: ea26552f54f92f096711c66c5b86a85ca5692dd3
Parents: ba938bc
Author: daewon <da...@apache.org>
Authored: Thu Apr 19 18:55:12 2018 +0900
Committer: daewon <da...@apache.org>
Committed: Thu Apr 19 18:55:12 2018 +0900

----------------------------------------------------------------------
 .../scala/org/apache/s2graph/core/S2Graph.scala |  9 ++++----
 .../core/index/LuceneIndexProvider.scala        |  7 ++++---
 .../graphql/repository/GraphRepository.scala    |  5 ++++-
 .../s2graph/graphql/types/FieldResolver.scala   |  2 --
 .../apache/s2graph/graphql/types/S2Type.scala   | 22 ++++++--------------
 5 files changed, 18 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/ea26552f/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
index 2dc9f63..74574ed 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
@@ -268,7 +268,7 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends S2Grap
       (queryParam.vertexIds ++ vids).distinct.map(vid => elementBuilder.newVertex(vid))
     }
 
-    if (queryParam.fetchProp) matchedVertices.flatMap(getVertices)
+    if (true) matchedVertices.flatMap(vs => getVertices(vs))
     else matchedVertices
   }
 
@@ -312,10 +312,9 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends S2Grap
       mutateVertices(getStorage(service))(service.cluster, vertexGroup.map(_._1), withWait).map(_.zip(vertexGroup.map(_._2)))
     }
 
-    Future.sequence(futures).flatMap { ls =>
-      indexProvider.mutateVerticesAsync(vertices).map { _ =>
-        ls.flatten.toSeq.sortBy(_._2).map(_._1)
-      }
+    indexProvider.mutateVerticesAsync(vertices)
+    Future.sequence(futures).map{ ls =>
+      ls.flatten.toSeq.sortBy(_._2).map(_._1)
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/ea26552f/s2core/src/main/scala/org/apache/s2graph/core/index/LuceneIndexProvider.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/index/LuceneIndexProvider.scala b/s2core/src/main/scala/org/apache/s2graph/core/index/LuceneIndexProvider.scala
index 68d481c..8d5f997 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/index/LuceneIndexProvider.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/index/LuceneIndexProvider.scala
@@ -23,6 +23,7 @@ import java.io.File
 import java.util
 
 import com.typesafe.config.Config
+import org.apache.lucene.analysis.core.KeywordAnalyzer
 import org.apache.lucene.analysis.standard.StandardAnalyzer
 import org.apache.lucene.document.{Document, Field, StringField}
 import org.apache.lucene.index.{DirectoryReader, IndexWriter, IndexWriterConfig, Term}
@@ -48,7 +49,7 @@ class LuceneIndexProvider(config: Config) extends IndexProvider {
   import scala.collection.JavaConverters._
   import scala.collection.mutable
 
-  val analyzer = new StandardAnalyzer()
+  val analyzer = new KeywordAnalyzer()
   val writers = mutable.Map.empty[String, IndexWriter]
   val directories = mutable.Map.empty[String, BaseDirectory]
   val baseDirectory = scala.util.Try(config.getString("index.provider.base.dir")).getOrElse(".")
@@ -174,11 +175,11 @@ class LuceneIndexProvider(config: Config) extends IndexProvider {
       val searcher = new IndexSearcher(reader)
 
       val docs = searcher.search(q, hitsPerPage)
-      logger.error(s"total hit: ${docs.scoreDocs.length}")
+//      logger.error(s"total hit: ${docs.scoreDocs.length}")
 
       docs.scoreDocs.foreach { scoreDoc =>
         val document = searcher.doc(scoreDoc.doc)
-        logger.error(s"DOC_IN_L: ${document.toString}")
+//        logger.error(s"DOC_IN_L: ${document.toString}")
 
         val id = reads.reads(Json.parse(document.get(field))).get
         ids.add(id)

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/ea26552f/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala
----------------------------------------------------------------------
diff --git a/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala b/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala
index 1f53c76..a83b7f2 100644
--- a/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala
+++ b/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala
@@ -126,7 +126,10 @@ class GraphRepository(val graph: S2GraphLike) {
   }
 
   def getVertices(queryParam: VertexQueryParam): Future[Seq[S2VertexLike]] = {
-    graph.asInstanceOf[S2Graph].searchVertices(queryParam)
+    graph.asInstanceOf[S2Graph].searchVertices(queryParam).map { a =>
+      println(a)
+      a
+    }
   }
 
   def getEdges(vertices: Seq[S2VertexLike], queryParam: QueryParam): Future[Seq[S2EdgeLike]] = {

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/ea26552f/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala
----------------------------------------------------------------------
diff --git a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala
index 64650d3..4f092dd 100644
--- a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala
+++ b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala
@@ -53,8 +53,6 @@ object FieldResolver {
     val ids = c.argOpt[Any]("id").toSeq ++ c.argOpt[List[Any]]("ids").toList.flatten
     val vertices = ids.map(vid => c.ctx.toS2VertexLike(vid, column))
 
-    val search = c.argOpt[String]("search")
-
     val columnFields = column.metasInvMap.keySet
     val selectedFields = AstHelper.selectedFields(c.astFields)
 

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/ea26552f/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
----------------------------------------------------------------------
diff --git a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
index 4ba6680..b532263 100644
--- a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
+++ b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
@@ -146,23 +146,14 @@ object S2Type {
           implicit val ec = c.ctx.ec
           val (vertices, canSkipFetchVertex) = FieldResolver.serviceColumnOnService(column, c)
           val searchOpt = c.argOpt[String]("search").map { qs =>
-            val prefix = s"${GlobalIndex.serviceField}:${service.serviceName} AND ${GlobalIndex.serviceColumnField}:${column.columnName}"
+            val prefix = s"(${GlobalIndex.serviceField}:${service.serviceName} AND ${GlobalIndex.serviceColumnField}:${column.columnName})"
+
             if (qs.trim.nonEmpty) Seq(prefix, qs).mkString(" AND ")
             else prefix
-            qs
           }
 
-          println(searchOpt)
-
-          val vertexQueryParam = VertexQueryParam(0, 100, searchOpt, vertices.map(_.id))
-
-//          if (canSkipFetchVertex) Future.successful(vertices)
-//          else GraphRepository.vertexFetcher.deferSeq(deferVertices)
-
-//          val empty = Seq.empty[S2VertexLike]
-//          DeferredValue(GraphRepository.vertexFetcher.defer(vertexQueryParam)).map(m => m._2)
-
-            c.ctx.getVertices(vertexQueryParam)
+          val vertexQueryParam = VertexQueryParam(0, 100, searchOpt, vertices.map(_.id), !canSkipFetchVertex)
+          DeferredValue(GraphRepository.vertexFetcher.defer(vertexQueryParam)).map(m => m._2)
         }
       ): Field[GraphRepository, Any]
     }
@@ -189,9 +180,8 @@ object S2Type {
       implicit val ec = c.ctx.ec
       val (vertex, canSkipFetchVertex) = FieldResolver.serviceColumnOnLabel(c)
 
-      //      if (canSkipFetchVertex) Future.successful(vertex)
-      //      else GraphRepository.vertexFetcher.defer(vertex)
-      Future.successful(vertex)
+      val vertexQueryParam = VertexQueryParam(0, 100, None, Seq(vertex.id), !canSkipFetchVertex)
+      DeferredValue(GraphRepository.vertexFetcher.defer(vertexQueryParam)).map(m => m._2.head)
     })
 
     lazy val EdgeType = ObjectType(