打包的狐狸 2026-10-21 07:17:07 发布手机里保存的图片越来越多以后,我经常遇到一个问题:明明记得自己拍过某张照片,却想不起它的文件名,也不记得具体是哪一天拍的。
如果是普通文件搜索,只能依靠文件名、时间等信息。可用户记住的往往不是这些字段,而是图片的内容。
比如“那张桌上有咖啡和电脑的照片”,或者“之前拍的红色背包”。
HarmonyOS 7 的官方能力介绍中提到了通过文本搜索图片的能力,支持基于文本语义检索图片。
这让我想到,可以围绕图片语义搜索做一个轻量级的资料管理应用。
先想清楚搜索需要哪些数据
语义搜索的具体实现取决于所使用的官方能力。站在应用业务层,我更关心的是怎样接收查询、展示结果,以及如何处理没有匹配结果的情况。
先定义一个搜索结果模型:
interface ImageSearchItem {
id: string;
uri: string;
description: string;
}
function filterImageItems(
items: ImageSearchItem[],
keyword: string
): ImageSearchItem[] {
const query: string = keyword.trim();
if (query.length === 0) {
return [];
}
return items.filter(
(item: ImageSearchItem) => {
return item.description.includes(query);
}
);
}
需要说明的是,这里的 filterImageItems() 只是普通文本过滤,不能实现真正的图像语义检索。它的作用是演示业务层的数据结构和空查询处理。真正的语义搜索必须调用目标版本支持的图片搜索能力。
语义搜索与关键词搜索不是一回事
普通关键词搜索更关注字符串是否匹配。语义搜索则希望理解查询与图片内容之间的关系。
例如,用户搜索“适合做工作背景的桌面照片”,图片里可能根本没有“工作背景”这几个字,但其内容可能包含桌面、电脑和办公环境。
因此,在设计结果页面时,我不会只显示一个搜索结果列表,还会考虑让用户查看图片、修改关键词,或者通过更具体的描述缩小范围。
搜索结果还需要考虑隐私
如果应用搜索的是用户个人相册,首先要遵循相册访问权限和图片数据处理规则。不能为了让搜索效果更好,就默认把所有图片上传到远端服务器。
如果所接入的能力支持端侧处理,可以评估它是否适合个人照片管理等场景。但是否完全端侧运行、具体数据怎样处理,必须以对应能力的官方说明为准。
另外,搜索结果应该支持用户返回原图或查看来源,避免只展示一张缩略图却无法进一步使用。
我会怎么验证效果?
我会先准备一组具有不同内容的图片,再用多种表达进行查询。例如,同一组图片分别使用“红色背包”“旅行时的背包”和“户外用品”等词语进行搜索。
观察不同描述下的结果变化,可以帮助我们判断搜索能力是否符合真实需求。
对开发者来说,文本搜索图片的价值并不只是增加一个新按钮,而是让图片管理从依赖文件名和时间,进一步转向依赖内容和语义。
相关推荐
28
0
云上未完待续
0
0
程序员小初音
0
0
打包的狐狸
我还没有写个人简介......
帖子
提问
粉丝
华为HarmonyOS 6.1首发!5500万设备加持,鸿蒙生态再升级
2026-05-09 15:05:16 发布华为Pura 90系列即将发布:三款机型搭载自研麒麟新芯,首发鸿蒙6.1系统
2026-04-08 14:57:00 发布


京公网安备:11010502051901号