SDKsHarmonyOS商业版
搜索消息
在当前设备已同步的本地消息中按关键词和条件搜索。
本地搜索不会请求业务后端全量索引。conversationID 为空字符串时搜索全部本地会话;群聊应使用会话 ID,而不是 groupID。
参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
conversationID | string | 是 | 限定会话;空字符串表示全部本地会话。 |
keywords | string[] | 是 | 非空关键词列表。 |
keywordMatchType | KeywordListMatchType | 是 | 命中任一或同时命中全部。 |
senderUserIDs | string[] | 是 | 发送者筛选;不限制时传空数组。 |
messageTypes | ContentType[] | 是 | 消息类型筛选;不限制时传空数组。 |
searchTimePosition | number | 是 | UTC 秒级搜索起点;0 表示当前时间。 |
searchTimePeriod | number | 是 | 向过去搜索的秒数;0 表示不限制。 |
pagination | RequestPagination | 是 | 页码和每页数量。 |
import sdk, {
ContentType,
KeywordListMatchType,
SearchLocalMessagesReq,
SearchLocalMessagesResp,
} from '@openimsdk/imsdk';
const request: SearchLocalMessagesReq = {
conversationID: conversationID,
keywords: [searchText.trim()],
keywordMatchType: KeywordListMatchType.KeywordMatchOr,
senderUserIDs: [],
messageTypes: [ContentType.Text, ContentType.AtText],
searchTimePosition: 0,
searchTimePeriod: 0,
pagination: { pageNumber: 1, showNumber: 20 },
};
const response: SearchLocalMessagesResp = await sdk.searchLocalMessages(request);
renderSearchResults(response.searchResultItems, response.count);搜索结果按会话组织。跳转时使用结果项的 conversationID 与消息的 clientMsgID,修改任一条件时重置为第 1 页。该接口只搜索当前账号在当前设备已经同步的本地消息。
这个页面有帮助吗?