2016-10-03 39 views
1

我需要按相關性對搜索結果進行排序,同時嘗試解決Realm的NSPredicate限制。從領域查詢排除對象 - 嘗試按相關性排序(Swift)

我現在嘗試重複的結果:

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

顯然我的謂詞字符串有點偏離。

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

最終爲我工作。