问题总结:
在每个 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/