gpt4 book ai didi

Azure 搜索删除数据源中不存在的数据

转载 作者:行者123 更新时间:2023-12-02 06:30:15 25 4
gpt4 key购买 nike

我在 blob 存储 folder/new/data.json

中有一个文件

它包含 json 数组。

[   
{
"name": "a",
"data": {
"1":"something1",
"2":"something2"

}
},
{
"name": "b",
"data": {
"1":"something1",
"2":"something2"
}
}
]

我的数据源主体:

{
"name" : "datasource",
"type" : "azureblob",
"credentials" : { "connectionString" : "MyStorageConnStrning" },
"container" : { "name" : "mycontaner", "query" : "folder/new" }
}

我的索引正文:

{
"name" : "index",
"fields": [
{ "name": "id", "type": "Edm.String", "key": true, "searchable": false },
{ "name": "name", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": true},
{ "name": "data", "type": "Edm.String", "searchable": false}
]
}

索引器主体:

{
"name" : "indexer",
"dataSourceName" : "datasource",
"targetIndexName" : "index",
"parameters" : { "configuration" : { "parsingMode" : "jsonArray" } }
}

创建后,我可以搜索 ab 并获取结果。

现在我已将 folder/new/data.json 修改为

[   
{
"name": "aa",
"data": {
"1":"something1",
"2":"something2"

}
}
]

仅运行索引器只会覆盖

{
"name": "a",
"data": {
"1":"something1",
"2":"something2"

}
}

但是

{
"name": "b",
"data": {
"1":"something1",
"2":"something2"
}
}

依然存在。意味着 b 仍然可以搜索。

我该怎么做才能删除b

更珍贵的是,当数据源文件发生变化,索引数据也需要相应变化时,怎么办?从数据源中删除的数据需要从索引中删除,并且数据源中的新数据需要建立索引。

最佳答案

纳菲斯,

您应该考虑添加 soft delete policy 。仅从数据源中删除数据并不意味着现有记录也会被删除。如果您向 json 对象添加了“IsDeleted”字段,将其设置为 true,然后再次运行索引器,则该记录将被删除

[   
{
"name": "a",
"data": {
"1":"something1",
"2":"something2"
}
},
{
"name": "b",
"data": {
"1":"something1",
"2":"something2"
},
"isDeleted": true
}
]

一旦索引器再次运行,您就可以安全地从 json 数组中删除“b”对象。我建议确保您的索引器 is on a schedule因此一段时间后会自动删除删除内容。

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

马特

关于Azure 搜索删除数据源中不存在的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53672679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com