MST

星途 面试题库

面试题:Objective-C中Core Spotlight搜索结果处理及相关性优化

在Objective-C项目集成Core Spotlight后,搜索结果可能不符合预期。阐述如何在Objective-C代码中处理搜索结果,例如对结果进行排序、筛选,并且说明如何优化搜索相关性,如调整权重等操作。
44.9万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

处理搜索结果

  1. 排序: Core Spotlight返回的搜索结果是一个CSSearchableItemAttributeSet数组。假设搜索结果存储在NSArray<CSSearchableItem *> *searchResults中,可以根据CSSearchableItemAttributeSet的某个属性进行排序,比如根据日期属性NSDate *date排序:
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
NSArray<CSSearchableItem *> *sortedResults = [searchResults sortedArrayUsingDescriptors:@[sortDescriptor]];
  1. 筛选: 同样对于NSArray<CSSearchableItem *> *searchResults,如果要筛选出标题中包含特定字符串的结果,假设CSSearchableItemAttributeSetNSString *title属性:
NSArray<CSSearchableItem *> *filteredResults = [searchResults filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"title CONTAINS[c] %@", @"特定字符串"]];

优化搜索相关性

  1. 调整权重: 在创建CSSearchableItemAttributeSet时,可以设置不同属性的权重。例如,对于标题属性给予更高权重,内容属性给予较低权重:
CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeText];
[attributeSet setTitle:@"文档标题" importance:CSSearchableItemAttributeSetImportanceHigh];
[attributeSet setContent:@"文档内容" importance:CSSearchableItemAttributeSetImportanceLow];
  1. 添加更多相关属性: 除了基本的标题和内容属性,添加更多与搜索相关的属性,例如文档作者、文档类型等,有助于提高搜索相关性。
[attributeSet setValue:@"作者姓名" forKey:@"author"];
[attributeSet setValue:@"文档类型" forKey:@"documentType"];

这样在搜索时,Core Spotlight会综合考虑这些属性,提高搜索结果的准确性。