我们使用Azure搜索已有很多年了,并且运行良好。我刚意识到新的复杂数据类型,并对实现它们非常感兴趣。我可以找到有关如何创建索引的很好的示例,但是我面临的挑战是如何实现索引器。
我们在SQL Server数据库中使用索引器,并且启用了集成的更改检测,以便在运行索引器时自动更新索引。为此,数据源必须指向表。
对于当前的实现,我们将数据展平以将多个多值字段放入列表中,以便可以将它们带入索引。如果我们可以避免必须进行这种拼合,那就太好了。
作为示例,假设我们正在索引歌曲数据,并且该数据包括SongID,Title,AuthorID和AuthorName。源数据来自Song表和Author表,两者均包含SongID。我们当前的展平表包含以下条目:
SongID:S9182
标题:我很棒的新歌
作者ID:[“ A12345”,“ A67890”]
作者名称:[“ John Smith”,“ Sally Smith”]
有关如何实现此目标的任何指示?我唯一的想法是拥有多个索引器。一个用于基本信息,其他用于每种复杂数据类型。但这似乎并不优雅。
谢谢!
答案 0 :(得分:0)
为了索引两个表,您需要创建两个索引器(表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中的字段索引到索引中。
让我知道是否还有更多问题。