ios - 在 Parse 中使用 "or"进行全文查询

标签 ios objective-c parse-platform

问题总结:

在每个 Parse 对象中,我都有一个与该对象相关的关键字列表,作为 NSString 的 NSArray。我希望用户能够输入一个或多个词并找到在其关键字列表中至少包含这些词之一的所有对象。由于这将是对整个数据库的搜索,因此需要尽可能高效。

较长的版本/背景:

我正在构建一个允许创建和存储矢量图的 ios objective-c 应用程序。这些由两个可搜索字段索引。有一个可选的“标签”字段,它必须完全匹配——标签可能是“小”、“中”或“大”。还有一个用户在保存绘图时输入的描述字段,例如“红色汽车的绘图”或“我的小蓝色汽车”。

根据网络上的建议,我还在 Parse 中将描述中的单词存储为 NSString 的 NSArray,全部小写,删除了停用词,称为“关键字”,因此典型的 PFObject 可能是

标签:“小”; 描述:“我的小蓝汽车”;
关键字:“小”,“蓝色”,“汽车”

我希望用户能够搜索包含单词“car”“automobile”的所有记录。他们还应该能够有选择地指定标签字段的内容(例如“small”),这是一个“and”——它会找到所有在描述中包含“car”或“automobile”的记录and 在标签字段中有“小”。

我可以使用 [query whereKey:@"description"containsString:@"car"] 对描述字段进行搜索,然后对 containsString:@"automobile"进行同样的搜索,然后合并结果。这有效,但有两个问题。首先,它不能是索引搜索,因为我们在字符串中搜索字符串。其次,它需要我手动合并结果。我希望关键字字段将允许更智能的查询。

如何构建对象的字段和用户查询以使其尽可能高效?还有其他建议吗?

谢谢...

最佳答案

从你的问题中不清楚你目前是如何组合你的查询的,但 Parse 有一个内置的方式来使用 orQueryWithSubqueries: ,例如:

[query1 whereKey:@"description" containsString:@"car"];
[query2 whereKey:@"description" containsString:@"automobile"];
PFQuery *combinedQuery = [PFQuery orQueryWithSubqueries:@[query1,query2]];

关于ios - 在 Parse 中使用 "or"进行全文查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29298939/

相关文章:

ios - 如何在 iOS 设备上播放具有多个备用音轨的视频?

ios - 即使采取措施后,UICollectionView 单元格重用也会导致问题

ios - 从 AppDelegate 更改 CustomViewController 字段

ios - 如何在使用桥接头时将数据(字典)从 Objective-C Controller 传递到 Swift `viewcontroller`?还有别的办法吗?

ios - 当 iOS 处于锁屏模式时,我们可以识别手势吗?

objective-c - NSOpengl View 不起作用

objective-c - 使自定义 UIView 成为自定义 UITableViewCell 中的第一响应者

javascript - 用循环解析 Promise

javascript - Angular 和 ParseSDK Javascript CRUD 操作

ios - 如何使 imageView 固定大小并带有圆角