gpt4 book ai didi

iOS 联系人搜索应用

转载 作者:行者123 更新时间:2023-11-29 03:23:19 26 4
gpt4 key购买 nike

我正在开发一个类似于 iOS 联系人应用程序的应用程序。在我的应用程序中,列表中大约有 20000 个联系人。我想在此应用程序中执行通用搜索。当我们在搜索字段中键入时,搜索也应该发生

, 搜索“John Australia”将显示姓名字段为 John,地址字段为 Australia 的联系人。我使用了 coredata 但它的性能很差(我不知道可能是我使用了不正确的谓词,我使用了 OR 和 AND 组合的谓词)。

所以现在我转移到 sqlite FTS4 数据库并使用 FMDB 来搜索联系人。性能比核心数据好得多。

这是我用 FTS4 做的

将所有联系人导入核心数据文件(uniqID、姓名、年龄、电子邮件、公司、职位、地址、备注、)。现在用 uniqID ,searchText,displayName 创建了一个 fts4 虚拟表

create virtual table searchData using FTS4 (guid, searchText, displayName)

并将所有字段插入到 fts4 表中。即,例如,

uniqId  name age email               company    title  address             note     
12312 , John,32,johnsock@style.com , style Inc, CEO , Australia Street-4 , bla bla bla

这是核心数据中的行,它像这样移动到 FTS4 表中

  uniqID searchText               displayName
12312 John John
12312 johnsock@style.com John
12312 Style Inc John
12312 CEO John
12312 Australia Street-4 John
12312 bla bla bla John

现在我正在这个 sqlite fts 4 表中执行搜索。这是我对“John Australia”的 SQL 查询

SELECT guid,displayName FROM searchData WHERE searchText MATCH John* INTERSECT SELECT guid,displayName FROM searchData WHERE searchText MATCH Australia*

如果我有 3 个词,那么我将有 intersection 3 select query 。我从该查询中获得的输出运行良好。

从查询中获得结果后,我使用显示名称填充到 TableView 中

我有两个问题。

1 如果我有多个单词,与 iOS native 联系人应用程序相比,我仍然面临性能问题。

  1. 如果我只搜索一个词,性能非常好,但是对多词搜索不满意。

  2. 我的查询不会用类似的方式搜索电子邮件 ID(即我需要获取 即使我搜索作品“sock”)也会得到结果。

是否有任何算法或逻辑可以应用于此搜索,以便我的搜索速度很快(请考虑多词搜索)。同时,我如何使用类似的查询来搜索电子邮件 ID 以保持相同的更好性能

引用:http://www.sqlite.org/fts3.html

http://www.swwritings.com/post/2013-04-30-searching-for-speedy-searching

最佳答案

我们的项目中遇到了类似的性能问题,sqlite 中的 pragma 命令帮助了我们。您可以使用以下命令进行性能升级

  1. 更改缓存大小(每页为 1024 字节)

    PRAGMA cache_size = Number-of-pages;

  2. 改变同步写入行为

    "PRAGMA synchronous = OFF"

  3. 将临时存储更改为内存

    "PRAGMA temp_store = MEMORY"

这些命令中的大多数都是针对每个 session 的,因此您可能必须在每次连接后执行它们。您可能还需要在实现之前阅读文档,因为这些命令会以一定的成本提高性能。这些 pragma 命令已记录在案 here .

关于iOS 联系人搜索应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20797121/

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