ArcGIS Pro 3.3 API Reference Guide
ArcGIS.Core.Data.Knowledge Namespace / KnowledgeGraphSearchFilter Class / ReturnSearchContext Property
Example

In This Topic
    ReturnSearchContext Property
    In This Topic
    Gets or sets whether to include search context fields. The default value is false.
    Syntax
    public bool ReturnSearchContext {get; set;}
    Public Property ReturnSearchContext As Boolean
    Remarks
    Search context fields include propertyNames, scores and highlights. If ReturnSearchContext is set true, then the cypher_clause is ignored and exactly the tuple { id(doc), [propertyName1, ..., propertyNameN], [score1,..., scoreN], [highlight1, ..., highlightN]} is returned in the result set for each document. The default value is false.
    Example
    Submit a Text Search
    //On the QueuedTask...
    //and assuming you have established a connection to a knowledge graph
    //...
    //Construct a KG search filter. Search text uses Apache Lucene Query Parser
    //syntax - https://lucene.apache.org/core/2_9_4/queryparsersyntax.html
    var kg_sf = new KnowledgeGraphSearchFilter()
    {
      SearchTarget = KnowledgeGraphNamedTypeCategory.Entity,
      SearchText = "Acme Electric Co.",
      ReturnSearchContext = true,
      MaxRowCount = 10 //Default is 100 if not specified
    };
    
    //submit the search - returns a KnowledgeGraphCursor
    var e = 0;
    using (var kg_rc = kg.SubmitSearch(kg_sf))
    {
      //wait for rows to be returned from the server
      //note the "await"...
      while (await kg_rc.WaitForRowsAsync())
      {
        //Rows have been retrieved - process this "batch"...
        while (kg_rc.MoveNext())
        {
          //Get the current KnowledgeGraphRow
          using (var graph_row = kg_rc.Current)
          {
            //We are returning entities from this search
            var entity = graph_row[0] as KnowledgeGraphEntityValue;
            var entity_type = entity.GetTypeName();
            var record = new List<string>();
            //discover keys(aka "fields") dynamically via GetKeys
            foreach (var prop_name in entity.GetKeys())
            {
              var obj_val = entity[prop_name] ?? "null";
              record.Add(obj_val.ToString());
            }
            System.Diagnostics.Debug.WriteLine(
              $"{entity_type}[{e++}] " + string.Join(", ", record));
            //or use "Process a KnowledgeGraphRow Value" snippet
            //ProcessKnowledgeGraphRowValue(entity);
          }
        }
      }//WaitForRowsAsync
    }//SubmitSearch
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3.2 or higher.
    See Also