我目前有一个函数来获取一个字符串,将其分解为句子,然后提取包含用户定义关键字的句子并返回它们:function getSentencesWithWord(word, text) { let sentenceArray = text.replace(/([.])\s*(?=[A-Z])/g, "$1|").split("|") return sentenceArray.filter(sentence => sentence.includes(word))}目前,此功能有效。但是,我需要使用此功能搜索的文本量非常大;它正在搜索大约 30 个 google 文档,每个文档最多可达 75 页,并且搜索某些术语(例如单词“the”)可能需要一分钟才能完成该功能。有没有更优化的方法来搜索和提取这么多文本?编辑:因为有人在评论中问,word变量只是从 HTML 页面上的文本输入中获得的字符串,而text变量是通过 Google Apps 脚本中的此函数获得的字符串:function getText(docID){ let doc = DocumentApp.openById(docID); let textToSearch = doc.getBody().getText(); return textToSearch;}我有一个需要访问的所有 google 文档 ID 的数组,我只是遍历数组并获取每个文档的文本
2 回答
互换的青春
TA贡献1797条经验 获得超6个赞
无法使用 Google Apps Script 找到更快的方法来实现这一点,所以我只是回到 Node.js 并最终使用 Google Drive API 将文件下载为 .txt 文件,这些文件要小得多,因此我可以搜索他们现在快得多
慕森王
TA贡献1777条经验 获得超3个赞
您提供的替换replace(/([.])\s*(?=[A-Z])/g, "$1|")
对我不起作用==没有更改就得到了相同的字符串...
这个怎么样:
("|"+text.toLowerCase().replace(/\s/g, "|")+"|").includes("|"+word.toLowerCase()+"|")
或这个:
("|"+text.toLowerCase().split(" ").join("|")+"|").includes("|"+word.toLowerCase()+"|")
添加回答
举报
0/150
提交
取消