コード例 #1
0
 private GraphResultSet CreateGraphResultSet(RowSet rs, IGraphTypeSerializer serializer)
 {
     return(GraphResultSet.CreateNew(
                rs,
                serializer.GraphProtocol,
                serializer.GetGraphRowParser()));
 }
        /// <summary>
        /// Gets the personalized video suggestions for a specific user.
        /// Based on DSL tutorial provided here, we changed the recommendation from pre-aggration
        /// tables to real-time graph recommendation.
        /// https://academy.datastax.com/content/gremlin-dsls-net-dse-graph
        /// </summary>
        public override async Task <GetSuggestedForUserResponse> GetSuggestedForUser(GetSuggestedForUserRequest request,
                                                                                     ServerCallContext context)
        {
            Logger.Information("Request suggested video(s) for user {user}", request.UserId.Value);
            GraphTraversalSource g = DseGraph.Traversal(_session);

            // DSL Baby !
            var traversal = g.RecommendVideos(request.UserId.ToGuid().ToString(), 5, 4, 1000, 5);

            GraphResultSet result = await _session.ExecuteGraphAsync(traversal);

            // Building GRPC response from list of results vertices (hopefully 'numberOfVideosExpected')
            var grpcResponse = new GetSuggestedForUserResponse
            {
                UserId      = request.UserId,
                PagingState = ""
            };

            foreach (IVertex vertex in result.To <IVertex>())
            {
                Logger.Information("Result " + vertex);
                grpcResponse.Videos.Add(MapVertexToVideoPreview(vertex));
            }
            return(grpcResponse);
        }
コード例 #3
0
        private static void VerifyGraphResultSet(GraphResultSet rs)
        {
            var v = rs.First().ToVertex();

            Assert.AreEqual("person", v.Label);
            Assert.AreEqual("marko", v.GetProperty("name").Value.ToString());
            Assert.AreEqual(29, v.GetProperty("age").Value.ToInt32());
        }
コード例 #4
0
        private static void VerifyGraphResultSet(ISession session, GraphResultSet rs)
        {
            var v = rs.First().ToVertex();

            Assert.AreEqual("person", v.Label);
            TestHelper.FillVertexProperties(session, v);
            Assert.AreEqual("marko", v.GetProperty("name").Value.ToString());
            Assert.AreEqual(29, v.GetProperty("age").Value.ToInt32());
        }
コード例 #5
0
        public async Task <GraphResultSet> ExecuteGraphAsync(IGraphStatement graphStatement)
        {
            var stmt = graphStatement.ToIStatement(_config.GraphOptions);

            await GetAnalyticsMaster(stmt, graphStatement).ConfigureAwait(false);

            var rs = await _coreSession.ExecuteAsync(stmt).ConfigureAwait(false);

            return(GraphResultSet.CreateNew(rs, graphStatement, _config.GraphOptions));
        }
コード例 #6
0
        private void ValidateVertexResult(GraphResultSet rs, string vertexLabel, string propertyName, string expectedValueString)
        {
            var first = rs.FirstOrDefault();

            Assert.NotNull(first);
            var vertex = first.ToVertex();

            Assert.AreEqual(vertex.Label, vertexLabel);
            var valueString = vertex.Properties[propertyName].ToArray()[0].Get <string>("value");

            Assert.AreEqual(valueString, expectedValueString);
        }
コード例 #7
0
 private void ValidateVertexResult(GraphResultSet rs, string vertexLabel, string propertyName, string expectedValueString)
 {
     var first = rs.FirstOrDefault();
     Assert.NotNull(first);
     var vertex = first.ToVertex();
     Assert.AreEqual(vertex.Label, vertexLabel);
     var valueString = vertex.Properties[propertyName].ToArray()[0].Get<string>("value");
     Assert.AreEqual(valueString, expectedValueString);
 }