文档搜索是指主要针对非结构化自由文本(不仅仅是文档)进行的搜索。无论您是搜索网页、查找产品还是使用精选内容,都可以使用搜索引擎来完成。您来到一个网页并在搜索文本框中输入搜索内容。单击“搜索”,您就会(有望)获得符合您信息目标的相关条目。

搜索引擎源于数据库技术,它们存储数据,并处理针对该数据的查询。传统数据库主要处理结构化内容,数据被组织成表和列,并具有内置架构。数据库的工作是根据与列中的值相匹配的查询来检索所有数据行。搜索引擎使用结构化数据(文档),其中包含元数据和大块非结构化文本(自由文本)。搜索引擎使用语言规则将这些大文本块分解为匹配术语。此外,搜索引擎具有内置的排序功能,可对结果进行排序并将最佳结果置于首位。关系数据库和 NoSQL 数据库可检索所有结果,而搜索引擎用于检索最佳结果。

搜索引擎的应用分为三大类:文档搜索,主要用于非结构化自由文本;电子商务搜索,用于结构化和非结构化数据的混合;以及查询卸载,主要用于结构化数据。

文档搜索可以使用元数据吗?

在文档搜索中,您搜索的主文档可以小到一个段落,也可以大到数千页。文档中包含各种其他字段,包括非结构化文本字段(标题摘要)、半结构化字段(作者)和结构化字段(出版日期、来源组、类别),即元数据。搜索引擎会对用户查询中的混合文本和元数据进行处理。

文档搜索主要面临两方面的挑战:一个是数据准备与摄取,另一个是搜索相关性。

在文档搜索使用案例中,文档主体(语料库)来源于用户生成的或其他未管理的内容。这些内容中通常会包含拼写错误或其他错误、重复以及无意义的数据。在将这些数据加载到搜索引擎之前,您需要管理、清洗和规范化这些数据。准备好数据后,您需要将数据加载到引擎中(通过调用摄取 API 实现)。最后,您需要一个更新文档的流程,以便在文档发生变更时使用。

文档搜索的核心价值是检索与用户查询相关的文档,即搜索相关性。在检索过程中,搜索引擎通过统计方法(BM25)对所有匹配文档进行评分和排序。BM25 使用搜索词的唯一性与它们在匹配文档中的数量相交叉。查询所匹配的唯一术语越多,得分就越高。您必须针对自己的特定数据集调整评分函数;机器学习(ML)技术可帮您提高排名。搜索的好坏仅仅取决于它所检索的文档的相关性,而您要的是最佳结果。

还有哪些搜索用例?

电子商务搜索 

您进入一个电子商务引擎,从现有产品目录中查找和购买产品。这些产品包含许多元数据字段(尺寸、颜色、品牌等),此外还会包含名称、产品描述评论等较长的字段。 引擎的主要作用是检索最相关的结果,同时带来收益。网站设计人员使用大量工具来构建良好的相关性函数,从嵌入式、数值到基于用户行为的 ML 模型,多种多样。

为了改善最终用户体验,电子商务站点经常会添加分面搜索。引擎为各个字段(大小、颜色等)中的值提供了一个桶计数,而 UI 则为用户提供了一个可点击列表,用户可以使用该列表缩小结果范围。

某些类型的电子商务搜索特别依赖于个性化和推荐。如果购物者搜索“连衣裙”,虽然查询本身是完全开放的,没有任何限制,但搜索引擎应该找到顾客可能感兴趣的连衣裙。K 最近邻(k-NN)等相似度指标可以帮助实现这一点。

精选数据集搜索

搜索精选数据集,如企业文档存储库(临床试验数据、法律摘要、房地产等)。搜索引擎包含语言规则和其他特定于语言的特性,可帮助它们将大块文本分解为组件术语(字段或大块文本中的单词),以便进行匹配。它的查询语言非常丰富,这使得它能够搜索这些大块文本的术语组合(如“长袖连衣裙”)。但是引擎并不会检索所有匹配的内容:它使用相关性评分对文档进行排名和排序,只返回最佳匹配结果。

查询卸载

搜索引擎包含专门的数据结构,以便于促进大容量、低延迟搜索。这些结构中最重要的是倒排索引,它将单个术语映射到包含这些术语的文档列表中。由于这些数据结构,搜索引擎在查询处理方面优于关系数据库。但搜索引擎不是关系型。串联的关系数据库和搜索引擎是比较常见的。您可以使用关系数据库为应用数据提供服务,使用搜索引擎为这些数据提供低延迟相关性搜索。

打造丰富且令人愉悦的搜索体验需要多种作业函数。开发人员先整合一个搜索解决方案,然后创建一个搜索界面,并了解如何构建数据才能获得最佳搜索结果。产品经理提交元数据结构和搜索界面用户体验的需求。数据科学家管理源数据,并跟踪和处理用户行为。高管人员设置业务 KPI,来指导产品和开发团队实现引擎的业务目标。

为了更好地匹配术语,已对搜索引擎进行了优化。搜索“8 英尺长的沙发”,该为您返回 8 英尺长的沙发的搜索结果,它通过匹配“8”、“英尺”和“沙发”来进行搜索。这称之为关键字搜索。在许多情况下,搜索者并不知道他们所寻找东西的确切术语,想要按意思进行搜索。这称之为语义搜索,它处于搜索和 ML 技术的前言。借助语义搜索,您可以使用“可用来坐在火炉旁的舒适地方”这样的查询语来检索像 8 英尺长的沙发这样的物品。

语义搜索需要使用 ML 技术。您必须构建一个条目和查询的矢量空间,然后使用矢量相似度计算来查找该空间中接近的条目。借助矢量搜索,文档不需要与查询有任何共同的单词或同义词,就可以成为相关文件。例如,一个关于“自行车保养”的搜索可以匹配一份关于“变速器润滑”的文档,因为 ML 算法知道“变速器润滑”经常出现在自行车保养的讨论中。

如何获得更好地搜索结果?

有效文档和电子商务搜索的关键是二者的相关性,即搜索结果是否满足搜索者的需求? 搜索引擎试图利用各种技术将最佳结果置于首位。这称之为相关性排名。数据库返回与之匹配的所有内容,而搜索引擎则根据相关条目的评分进行优化。

  • 您的搜索可以包含多个具有差异权重的字段。例如,如果您在搜索电影数据库,您可能希望包含title、directoractor 等字段,并赋予 titleactor 更高权重的匹配度。
  • 考虑调整搜索结果,获取最新搜索结果。在您的索引中添加一个 release date(发布日期)字段,并在评分函数中添加基于该日期的指数衰减函数。
  • 考虑在搜索结果中添加分面或筛选条件,以帮助您的用户通过特定元素向下钻取。许多文档搜索系统都支持对元数据进行分面,通常在搜索结果页面的左侧以类别形式显示。
  • 考虑添加同义词。同义词可以帮助最终用户查找他们搜索的结果。在服装领域,T 恤可以是“T-shirt”,也可以是“teeshirt”。您的最终客户无论是搜索“tee”还是搜索“t-shirt”,得到的结果应该都是相同的。添加同义词可以返回这些结果。

可以跨多个应用程序进行文档搜索。

  • 电子商务站点使用文档搜索来检索用户想要购买的产品。
  • 照片站点使用文档搜索,根据标题描述等元数据,乃至匹配的图像矢量来查找照片。
  • 法律用户使用文档搜索来查找相关的判例法。
  • 医生利用文档搜索查找适合患者病情的药物。
  • 客户关系管理(CRM)解决方案使用文档搜索来检索笔记、交互和目标客户。

您需要寻找东西时,请使用搜索引擎!

AWS 文档搜索后续步骤

查看其他与产品相关的资源
查看云中数据库服务的免费优惠 
注册免费账户

立即享受 AWS 免费套餐。 

注册 
开始在控制台中构建

在 AWS 管理控制台中开始构建。

登录