Azure 搜索简介

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

azure search 是微软的一项新的云服务。我稍微玩了一下这项服务,现在它是我最喜欢的玩具。在这篇文章中,我将快速概述 azure search 并告诉您它是什么以及不是什么。我还提供了一些关于您需要什么工具以及如何摆脱我在 coreclr 上使用服务时遇到的一些问题的建议。

为什么要使用 Azure 搜索?

首先让我们看一下微软搜索技术的图片以及 Azure 搜索的用武之地。下面是微软构建和提供的服务表。对于所有服务,我还添加了为什么它们不适合自定义搜索场景的解释。

技术 描述 缺点
桌面搜索 支持文件搜索和邮箱搜索,媒体服务也使用。 不是为网络场景或大量并行用户构建的。
网络搜索,旨在从网络中查找网页和文件。 从网络索引搜索,没有自定义结构化数据的选项。
共享点搜索 也许是最强大的企业级搜索解决方案,高度可定制。 你的钱可以买到最好的,但它非常昂贵。
文档数据库 nosql 文档数据库由微软构建并在 azure 上作为服务提供。 只是一个没有太多搜索语义的数据库。

azure search 是拼图中缺失的一块——您可以构建自定义搜索索引,自定义这些索引并从您拥有的任何应用程序的索引中进行搜索。对于较小的负载,Azure 上还提供免费搜索。

Azure 搜索的内部结构

微软使用 elasticsearch 作为 azure 搜索服务背后的搜索引擎。弹性搜索是建立在 lucene 文档数据库之上的免费搜索解决方案。对我们来说,有一个基于 json 的搜索 api,这就是我们的应用程序与搜索服务通信的方式。

注意! 我们的应用程序仅使用 azure search api 提供的内容。我们无法直接访问 api 背后的搜索解决方案,实际上对我们来说,微软实际使用的是什么无关紧要。 azure search 不是云托管的弹性搜索。

天蓝色搜索的功能

以下是 azure search 的一些功能:

  • 索引器 ——从 sql azure 或 documentdb 更新搜索索引
  • 分面导航 ——在搜索应用程序中提供自主向下钻取导航的过滤机制
  • 分页 ——搜索结果可以分页
  • 评分配置文件 - 自定义搜索分数计算的 Microsoft Azure 搜索功能,影响项目在搜索结果中的排名方式
  • suggesters—— 用于基于搜索的自动完成,例如
  • tab boosting—— 基于索引中已有的标签元素可以在结果中获得更高的排名分数
  • 语言分析器 ——分析最常涉及断字、文本规范化和过滤术语的字段。

管理搜索服务

我们可以通过 Azure 预览门户管理我们的搜索服务。下面的屏幕截图让您对预期结果有所了解。

并非所有管理选项都可通过预览门户获得——您仍然需要通过直接对 api 的 json 调用来完成一些操作。我希望随着时间的推移,所有这些选项也能找到管理门户的方式。

工具和库

以下是您可以使用的工具和库:

  • nuget 上有一个搜索库。它由 Microsoft 开发,您可以在使用完整版 .net 的应用程序中使用它。 注意! 今天这个库在 coreclr 上不受支持。
  • 有一个休息客户端,因为有些事情你只能通过 api 来做。例如,有适用于 Firefox 的 restclient 插件。

解决问题

  • 如果您的应用程序在 coreclr 上运行,那么您可以通过示例使用 json.net 编写自己的简单搜索客户端。
  • 异步运行代码时,我在 visual studio 和 coreclr 上遇到了问题。如果您遇到同样的麻烦,那么 task.wait() 可以解决问题,但不要将此技巧视为解决方案。它仍然是糟糕的黑客攻击,但你可以控制正在发生的事情。
  • 由于存在一些硬性限制(您不能更改和删除索引中的现有字段),最好编写一段代码再次填充您的索引。如果您只是使用搜索服务并且您的数据没有管理界面,您可能还需要此代码。

包起来

借助 Azure 搜索,我们现在拥有一个简单的搜索服务,我们可以将其用于自定义数据。我们正在构建什么应用程序并不重要。我们可以从可以访问 Internet 的所有类型的应用程序中使用 Azure 搜索。大多数配置可以通过预览门户完成,但仍有一些事情我们必须直接通过 API 完成。尽管索引有一些限制,但我们仍然可以在生产环境中使用该服务。对于较小的场景,还提供免费版本的搜索服务。