对知识图谱服务的图谱资源执行的搜索操作。此操作允许您搜索图谱中实体和关系的属性。搜索中包含具有 text
数据类型或全局唯一标识符 (GUID) 数据类型且 searchable 属性设置为 true
的任何字段。搜索索引是根据所有可搜索字段的值自动构建和维护的。
流式搜索返回结果的速度比搜索更快,并且所返回的结果很小,可立即进行渲染。流式搜索还提供了其他参数来约束搜索。
// example GraphSearchStreaming used in a executeSearchStreaming
KnowledgeGraphModule.executeSearchStreaming(
knowledgeGraph,
{ // autocasts to new GraphSearchStreaming
searchQuery: "solar",
typeCategoryFilter: "both",
returnSearchContext: false,
start: 1, // index of first record to return
num: 200, // return 200 records.
namedTypesFilter: ["Company", "Supplier", "Part"],
globalIdsFilter: ["{G4E8G2S8D-2GS5-98S4-3S5D-S1DE7G45DS48}",
"{FNWI1G5W-1A5W-3A5W-8412-A1W5F4W8F7AS}",
"{9D2D6AFD-41F1-49A4-8412-CACCC9906E88}"]
}
).then((streamingSearchResult)=>{
// the result of a streaming search is a readableStream which requires decoding.
readStream(streamingSearchResult)
})
// a function to read the readable stream returned from the above query
const readStream = async (streamingQueryResult) => {
let time = Date.now();
let reader = streamingQueryResult.resultRowsStream.getReader();
try {
while (true) {
const { done, value } = await reader.read();
if (done) {
console.log(`Completed database requests: ${(Date.now() - time) / 1000} seconds`, value);
break;
}
console.log(`Chunk returned in: ${(Date.now() - time) / 1000} seconds`, value)
}
} catch (err) {
if (err.name === "AbortError") {
console.log("Request aborted as expected");
} else {
throw err;
}
}
};
// sample result of read streaming search result chunk printed to the console
"Streaming chunk returned in: 0.082 seconds"
[
[{
"declaredClass": "geoscene.rest.knowledgeGraph.Entity",
"properties": {
"Name": "Suncommon",
"Employee_Count": 400,
"energyType": "solar"
},
"typeName": "Company",
"id": "{G4E8G2S8D-2GS5-98S4-3S5D-S1DE7G45DS48}"
}],
[{
"declaredClass": "geoscene.rest.knowledgeGraph.Entity",
"properties": {
"Name": "Quality Solar Supply",
"Supplier_code": "158B",
"City": "New Orleans",
},
"typeName": "Supplier",
"id": "{FNWI1G5W-1A5W-3A5W-8412-A1W5F4W8F7AS}"
}],
[{
"declaredClass": "geoscene.rest.knowledgeGraph.Entity",
"properties": {
"Name": "Solar panel",
"panel_type": "Polycrystalline",
"price_per_unit": 400
},
"typeName": "Part",
"id": "{9D2D6AFD-41F1-49A4-8412-CACCC9906E88}"
}]
]
构造函数
-
new GraphSearchStreaming(properties)
-
参数properties Objectoptional
有关所有属性的列表,请参阅 properties。
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
String | 类的名称。 更多详情 | Accessor | |
String[] | 指定要搜索的 ID 列表。 更多详情 | GraphSearchStreaming | |
String[] | 更多详情 | GraphSearchStreaming | |
Number | 搜索返回的最大结果数。 更多详情 | GraphSearchStreaming | |
Boolean | 如果为 | GraphSearchStreaming | |
String | 要在知识图谱中进行搜索的文本。 更多详情 | GraphSearch | |
Number | 要返回的第一个结果的索引。 更多详情 | GraphSearchStreaming | |
String | 更多详情 | GraphSearch |
属性详细信息
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
指定要搜索的 ID 列表。
-
num Number
-
搜索返回的最大结果数。
-
returnSearchContext Boolean
-
如果为
true
,则返回与搜索相匹配的对象 ID、与搜索词相匹配的属性的名称、结果集的得分和突出显示。- 默认值:false
-
要在知识图谱中进行搜索的文本。接受 Lucene 搜索语法。
必需项
- 如果不提供,则 knowledgeGraphService.executeSearch() 将失败。
-
start Number
-
要返回的第一个结果的索引。
-
指定是否搜索实体、关系或两者。有效值为:
entity
、relationship
或both
。注
- 检查 knowledgeGraphService 的服务定义 (请参阅 GeoScene REST API - 托管知识图谱服务),以获取
typeCategoryFilter
的有效值。并非所有服务都支持both
。
必需项
- 成功执行搜索需要此属性。如果服务不支持
both
,则必须指定其他选项之一。
可能值:"entity"|"relationship"|"both"
- 默认值:"both"
- 检查 knowledgeGraphService 的服务定义 (请参阅 GeoScene REST API - 托管知识图谱服务),以获取
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
添加一个或多个与对象的生命周期相关联的句柄。 更多详情 | Accessor | ||
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
移除对象拥有的句柄组。 更多详情 | Accessor |
方法详细说明
-
addHandles(handleOrHandles, groupKey)inherited
-
添加一个或多个与对象的生命周期相关联的句柄。当对象被销毁时,将移除句柄。
// Manually manage handles const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true } ); // Handle gets removed when the object is destroyed. this.addHandles(handle);
参数handleOrHandles WatchHandle|WatchHandle[]对象销毁后,标记为要移除的句柄。
groupKey *optional标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
如果存在指定的句柄组,则返回 true。
参数groupKey *optional组键。
返回类型 描述 Boolean 如果存在指定的句柄组,则返回 true
。示例// Remove a named group of handles if they exist. if (obj.hasHandles("watch-view-updates")) { obj.removeHandles("watch-view-updates"); }
-
removeHandles(groupKey)inherited
-
移除对象拥有的句柄组。
参数groupKey *optional要移除的组键或组键的数组或集合。
示例obj.removeHandles(); // removes handles from default group obj.removeHandles("handle-group"); obj.removeHandles("other-handle-group");