我想知道 Amazon CloudSearch 和 Kendra 之间的主要区别是什么?为什么同一家公司有两种不同的工具相互竞争?两者看起来都一样,我不确定功能上有什么区别。如何将一个与另一个区分开来?
\nAmazon CloudSearch:为您的网站或应用程序设置、管理和扩展搜索解决方案。Amazon CloudSearch 使您能够搜索大量数据,例如网页、文档文件、论坛帖子或产品信息。只需在 AWS 管理控制台中单击几下,您就可以创建搜索域,将您想要搜索的数据上传到 Amazon CloudSearch,搜索服务会自动配置所需的技术资源并部署高度调整的搜索索引;
\nAmazon Kendra:由机器学习提供支持的企业搜索服务。这是一项高度准确且易于使用的企业搜索服务,\xe2\x80\x99s 由机器学习提供支持。它为您的网站和应用程序提供强大的自然语言搜索功能,以便您的最终用户可以在公司遍布的大量内容中更轻松地找到他们所需的信息。
\n我正在使用 Kendra 和 Salesforce 开发 POC。该连接器允许我连接到我的 Salesforce 组织并索引知识文章。我已经能够进行设置,并且目前它正在按预期工作。
我想引入一些自定义字段和数据点来帮助进一步丰富数据。其中之一是附加答案/正文,其中将包含搜索的关键信息。
我的数据源中的该字段是包含 HTML 的富文本,通常大于 2048 个字符,这一限制似乎是在 Kendra 中的字符串数据字段中施加的。
我遇到了两个内置的用于预处理和后数据丰富的钩子。我的想法是,我可以使用 pre hook 来去除 HTML 标签并在字段存储在索引中之前截断该字段。
挂钩参考:https://docs.aws.amazon.com/kendra/latest/dg/API_CustomDocumentEnrichmentConfiguration.html
当前设置:
我在索引中添加了一个名为 的新字段sf_answer_preview。然后,我将数据源中的该字段映射到 Salesforce 组织中的富文本字段。
如果我按原样运行它,它将索引 1,000 篇文章中的大约 200 篇,并给出一个错误,指出其余文章超过该字段中的 2048 个字符限制,这就是我尝试设置丰富内容的原因。
我在我的数据源上设置了上述丰富内容。我指定了一个在预提取中使用的 lambda,并且没有额外的过滤,因此在每篇文章上运行它。由于我使用的是数据源,所以我不能 100% 确定 S3 存储桶的用途,但它似乎是需要的,所以我也添加了它。
对于我的 lambda,我创建了以下内容:
exports.handler = async (event) => {
// Debug
console.log(JSON.stringify(event))
// Vars
const s3Bucket = event.s3Bucket;
const s3ObjectKey = event.s3ObjectKey;
const meta = event.metadata;
// Answer
const answer = meta.attributes.find(o => o.name === 'sf_answer_preview');
// …Run Code Online (Sandbox Code Playgroud)