浏览 SDKs · uni-app / uni-app x
平台
SDKsuni-app / uni-app x

搜索消息

在当前设备已同步的本地消息中按关键词和条件搜索。

复制

searchLocalMessages() 搜索当前账号已经同步到本设备的消息,不会请求业务后端的全量索引。群聊搜索使用对应的 conversationID,不是发送消息时使用的 groupIDconversationID 为空时可搜索全部本地会话。

跨用户审计、服务端全量检索、复杂权限过滤或全局排序应由后端搜索服务处理,再把命中的会话 ID 和消息 ID 返回客户端定位。

参数说明

UTS 接口要求传入完整搜索对象。没有启用的数组筛选传空数组,没有启用的时间筛选传 0

参数类型是否必填说明
conversationIDstring限定目标会话;省略或传 null 时搜索本地全部会话。
keywordListstring[]非空关键词列表。
keywordListMatchTypenumber0 表示命中任一关键词,1 表示同时命中全部关键词。
senderUserIDListstring[]发送者筛选;不限制时传空数组。
messageTypeListOpenIMMessageType[]消息类型筛选;不限制时传空数组。
searchTimePositionnumberUTC 秒级搜索起点;0 表示从当前时间开始。
searchTimePeriodnumber从起点向过去搜索的秒数;0 表示不限制时间范围。
pageIndexnumber页码,第一页传 1
countnumber每页最多返回的结果数量。
import {
  OpenIMMessageTypeAtText,
  OpenIMMessageTypeText,
  searchLocalMessages,
} from '@/uni_modules/unix-openim-sdk'

const keyword = searchText.trim()
if (keyword.length == 0) return

const result = await searchLocalMessages({
  conversationID: conversationID,
  keywordList: [keyword],
  keywordListMatchType: 0,
  senderUserIDList: [],
  messageTypeList: [OpenIMMessageTypeText, OpenIMMessageTypeAtText],
  searchTimePosition: 0,
  searchTimePeriod: 0,
  pageIndex: 1,
  count: 20,
})

返回结果

Promise 成功后返回 OpenIMSearchMessageResult | null

字段类型说明
totalCountnumber当前条件下匹配的消息总数。
searchResultItemsOpenIMSearchMessageResultItem[]按会话组织的搜索结果。

每个结果项包含 conversationIDconversationTypeshowNamefaceURLmessageCountmessageListlatestMsgSendTime 可能为空。跳转到结果时应使用结果项的 conversationID 与消息的 clientMsgID,不要按数组位置保存选中项。

继续分页时保持关键词、发送者、类型和时间条件不变,只递增 pageIndex。修改任一条件时,重置为第 1 页并清空旧结果。

搜索只建立调用时的本地结果,不触发消息事件。搜索结果可能因新消息、撤回或删除发生变化;页面可复用这些事件的所属页面更新增量,或使用相同条件重新搜索。需要展示命中消息前后记录时,使用读取消息上下文