索引全文搜索
福昕 PDF SDK iOS 版通过 Core SDK 提供了跨文档的索引全文搜索功能。该功能先对多个 PDF 文档建立全文索引,然后基于索引进行快速搜索,适用于需要在大量文档中查找内容的场景。
核心类
| 类 | 说明 |
|---|---|
FSFullTextSearch | 全文搜索引擎,负责建立索引和执行搜索 |
FSDocumentsSource | 文档来源,指定要索引的文档集合 |
FSSearchCallback | 搜索结果回调协议,每找到一个匹配项时回调 |
搜索排名模式
| 常量 | 说明 |
|---|---|
FSFullTextSearchRankModeNone | 无排名 |
FSFullTextSearchRankModeHitCount | 按命中次数排名 |
示例:建立索引并搜索
第 1 步:创建全文搜索引擎并设置索引数据库路径
objc
#import <FoxitRDK/FSPDFObjC.h>
FSFullTextSearch *fullTextSearch = [[FSFullTextSearch alloc] init];
// 设置索引数据库存放路径
NSString *dbPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES).firstObject
stringByAppendingPathComponent:@"search_index"];
[fullTextSearch setDataBasePath:dbPath];
第 2 步:建立/更新索引
objc
// 对单个文件更新索引
[fullTextSearch updateIndexWithFilePath:@"path/to/Sample.pdf"];
也可以对一批文档异步建立索引:
objc
FSDocumentsSource *source = ...; // 配置文档来源
FSProgressive *progressive = [fullTextSearch startUpdateIndex:source
pause:nil
reupdate:NO];
FSProgressiveState state = [progressive resume];
while (state == FSProgressiveToBeContinued) {
state = [progressive resume];
}
if (state == FSProgressiveFinished) {
NSLog(@"索引建立完成");
}
第 3 步:执行搜索
实现 FSSearchCallback 协议来接收搜索结果:
objc
@interface MySearchCallback : NSObject <FSSearchCallback>
@end
@implementation MySearchCallback
- (int)retrieveWithFile_path:(NSString *)filePath pageIndex:(int)pageIndex
matchResult:(NSString *)matchResult matchStartCharIndex:(int)matchStartCharIndex
matchEndCharIndex:(int)matchEndCharIndex {
NSLog(@"在文件 %@ 的第 %d 页找到: %@", filePath, pageIndex, matchResult);
return 0; // 返回 0 继续搜索,非 0 停止搜索
}
@end
执行搜索:
objc
MySearchCallback *callback = [[MySearchCallback alloc] init];
BOOL result = [fullTextSearch searchOf:@"搜索关键词"
rank_mode:FSFullTextSearchRankModeNone
callback:callback];
注意
索引全文搜索需要先建立索引数据库,首次索引可能需要较长时间,建议在后台线程执行。索引数据库建立后,后续搜索将非常快速。
API 参考
FSFullTextSearch、FSSearchCallback 的完整接口说明请参阅 API 手册。