如何在 CloudKit 记录中搜索部分单词?

How do I search for a partial word in a CloudKit record?

我正在尝试搜索 CloudKit 条包含我的用户输入的搜索文本的记录。

我有这些标题的记录(字符串格式):

我试过使用 'contains':

let predicate = NSPredicate(format: "self contains %@", searchText) 
let query = CKQuery(recordType: "ShareableItem", predicate: predicate)
    publicDatabase.perform(query, inZoneWith: nil) { results, error in
    ...

但这只是 returns 如果我使用完整的单词作为搜索词,我正在寻找的结果。

EG。如果我搜索 'Item',我会返回项目 1、项目 2 和项目 3,但如果我搜索 'tem',我不会得到任何结果。

是否有在搜索中包含通配符的方法或使用部分搜索文本的其他方法?

我也试过:

NSPredicate(format: "allTokens TOKENMATCHES[cdl] %@", searchText)

但结果相同

您只能从字段开头搜索部分文本。例如你可以使用:

NSPredicate(format: "YourTextField BEGINSWITH %@", searchText)

标记与您记录中标记(词)的查询搜索相匹配。它将始终搜索完整的单词。到目前为止,我只找到了解决此问题的一种解决方法,那就是您将要搜索的字段放入 en 生成一个额外的字段,其中包含您可以生成的所有部分标记。例如,如果您有一个包含文本 search text 的字段,那么您将生成包含 s se sea sear searc e ea ear earc earch a ar arc arch r rc rch c ch t te tex e ex ext x xt 的标记字段。这些都将被视为单独的令牌。