复杂数据类型的 Azure 搜索索引器



我们已经使用 Azure 搜索很多年了,它一直运行良好。我刚刚意识到新的复杂数据类型,并且对实现它们非常感兴趣。我可以找到有关如何创建索引的好示例,但我的挑战是如何实现索引器。

我们对 SQL Server 数据库使用索引器,并启用集成的更改检测,以便在运行索引器时自动更新索引。为此,数据源必须指向一个表。

对于我们当前的实现,我们已经平展了数据,将几个多值字段放入列表中,以便将它们引入索引。如果我们能避免这种扁平化,那就太棒了。

例如,假设我们正在索引歌曲数据,并且该数据包括歌曲ID,标题,作者ID和作者姓名。源数据来自 Song 表和 Author 表,这两个表都包含 SongID。我们当前的平展表包含以下条目:

歌曲ID: S9182
标题: 我的真棒新歌
作者ID: ["A12345","A67890"]作者姓名: ["约翰·史密斯","莎莉·史密斯"]

关于我如何完成此操作的任何指示?我唯一的想法是有多个索引器。一个用于基本信息,另一个用于每种复杂数据类型。但这似乎不是很优雅。

谢谢!

为了为两个表编制索引,需要创建两个索引器(表 1 的数据源 1、表 2 的数据源 2;数据源 1 的索引器 1、数据源 2 的索引器 2)。您可以在两个表之间创建一个视图,但这样您将丢失集成的更改跟踪。

听起来您已经解决了复杂的索引字段部分。但要彻底并提供一个例子: 如果数据作为 JSON 存储在 SQL 字段中,并且相应的索引字段设置为复杂类型,则索引器将自动为 JSON 中的字段编制索引。例如:

源数据:

{
"SongID": "S9182",
"Title": "My awesome new song",
"AuthorIDs": ["A12345", "A67890"],
"AuthorNames": ["John Smith", "Sally Smith"]
}

索引字段定义:

{
name: "fieldName",
type: "Edm.ComplexType",
fields:[
{
name: "songID",
type: "Edm.String"
},
{
name: "Title",
type: "Edm.String"
},
{
name: "AuthorIDs",
type: "Collection(Edm.String)"
},
{
name: "AuthorNames",
type: "Collection(Edm.String)"
}
]
}

使用上面的数据形状和索引定义,索引器会自动将 JSON 中的字段索引到索引中。

如果还有其他问题,请告诉我。

最新更新