public KnowledgeGraphCursor SubmitSearch( KnowledgeGraphSearchFilter searchFilter )
Public Function SubmitSearch( _ ByVal searchFilter As KnowledgeGraphSearchFilter _ ) As KnowledgeGraphCursor
Parameters
- searchFilter
- The search filter to submit
public KnowledgeGraphCursor SubmitSearch( KnowledgeGraphSearchFilter searchFilter )
Public Function SubmitSearch( _ ByVal searchFilter As KnowledgeGraphSearchFilter _ ) As KnowledgeGraphCursor
Exception | Description |
---|---|
ArcGIS.Core.CalledOnWrongThreadException | This method or property must be called within the lambda passed to QueuedTask.Run. |
System.ArgumentNullException | searchFilter cannot be null |
System.ArgumentException | searchFilter.SearchText cannot be null or empt |
//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
//On the QueuedTask... //and assuming you have established a connection to a knowledge graph //... //submit query or search to return a KnowledgeGraphCursor //using (var kg_rc = kg.SubmitQuery(kg_qf)) { //using (var kg_rc = kg.SubmitSearch(kg_sf)) { //... //wait for rows to be returned from the server //"auto-cancel" after 20 seconds var cancel = new CancellationTokenSource(new TimeSpan(0, 0, 20)); //catch TaskCanceledException try { while (await kg_rc.WaitForRowsAsync(cancel.Token)) { //check for row events while (kg_rc.MoveNext()) { using (var graph_row = kg_rc.Current) { //Graph row is an array, process all returned values... var val_count = (int)graph_row.GetCount(); for (int i = 0; i < val_count; i++) { var retval = graph_row[i]; //Process row value (note: recursive) //See "Process a KnowledgeGraphRow Value" snippet ProcessKnowledgeGraphRowValue(retval); } } } } } //Timeout expired catch (TaskCanceledException tce) { //Handle cancellation as needed } cancel.Dispose();
Target Platforms: Windows 11, Windows 10