gpt4 book ai didi

Android - 通过模糊/近似/相似匹配查找联系人

转载 作者:行者123 更新时间:2023-11-29 01:09:17 28 4
gpt4 key购买 nike

有多种方法可以通过显示名称查找联系人。例如这个答案Android - Find a contact by display name

但是我需要找到模糊匹配的联系人。例如如果找不到“Kim”,我需要返回名为“Keem”的联系人。

我该怎么做?

最佳答案

没有可以对显示名称进行模糊搜索的构建 API,但您可以自己做,应该不会那么难:

  1. 从数据库中读取所有联系人的姓名
  2. 使用类似 Jaro Winkler 的相似字符串比较算法与请求的名称进行比较
  3. 返回最佳匹配

第一步,代码如下:

Map<String, Long> contacts = new HashMap<String, Long>();

String[] projection = {Contacts._ID, Contacts.DISPLAY_NAME};
// use null if you want to include hidden contacts
String selection = Contacts.IN_VISIBLE_GROUP + "=1";
Cursor cur = cr.query(Contacts.CONTENT_URI, projection, selection, null, null);

while (cur != null && cur.moveToNext()) {
long id = cur.getLong(0);
String name = cur.getString(1);
contacts.put(name, id);
}
if (cur != null) {
cur.close();
}

对于第 2 步,您可以使用 Jaro Winkler 或其他一些字符串距离算法,这里有一个库可以帮助您: https://github.com/tdebatty/java-string-similarity

关于Android - 通过模糊/近似/相似匹配查找联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44456543/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com