从领域查询中排除对象 - 尝试按相关性排序(Swift)

时间:2016-10-03 18:15:18

标签: ios swift realm

我需要按照相关性对搜索结果进行排序,同时尝试解决Realm的NSPredicate限制。

我目前的尝试重复结果:

if searchText.characters.count > 0 {
        //First search is attempting exact match
        relevantResults = Array(dataModel.terms.filter("%K BEGINSWITH[c] %@", "title", searchText).sorted(byProperty: "title"))
        //Appended Results are looking for 'close enough' but include results that were already in the first search
        relevantResults.append(contentsOf: Array(dataModel.terms.filter("%K CONTAINS[c] %@", "title", searchText).sorted(byProperty: "title")))
    } else {
        relevantResults = Array()
    }

我试图通过其他一些谓词过滤器获得创意,例如:

"title NOT BEGINSWITH[c] %@ AND title CONTAINS[c] %@"

"SELF NOT IN %@"

Realm不支持哪些,或者没有有效的谓词过滤器。 无论哪种方式,我都需要找到一个解决方案,按相关性排序而不重复。

将在单独的TableView部分中显示更多搜索结果,我想排除"最佳匹配"结果也是如此。

如果可能的话,我想避免循环从第一组结果中获取所有标题,但似乎我可能不得不诉诸于此,除非有一些我不考虑的数组函数?有什么建议吗?

1 个答案:

答案 0 :(得分:2)

显然我的谓词字符串有点偏。

"title CONTAINS[c] %@ AND NOT title BEGINSWITH[c] %@"

最终为我工作。