gpt4 book ai didi

azure - 无法根据索引 json 数据中的特定键从 Azure 搜索中筛选记录

转载 作者:行者123 更新时间:2023-12-03 06:53:55 25 4
gpt4 key购买 nike

我已使用我的应用程序填充了 Azure 搜索数据,这就是 Portal.azure.com 的搜索资源管理器中显示的内容。

{
"@odata.context": "https://demosearch.search.windows.net/indexes('<indexname>')/$metadata#docs(*)",
"value": [
{
"@search.score": 1,
"id": "31",
"code": "C001105",
"title": "Demo Course Title 1",
"creator": "FILE_UPLOAD",
"events": [
{
"eventId": 97,
"eventStatus": "PLANNING",
"evtSession": [
{
"postCode": "AB10 1AB",
"townOrCity": "Aberdeen City,",
"dates": {
"from": "2022-08-11T08:00:00Z",
"to": "2022-08-11T11:00:00Z"
}
}
]
}
]
},
{
"@search.score": 1,
"id": "45",
"code": "C001125",
"title": "Demo Course Title 2",
"creator": "FILE_UPLOAD",
"events": [
{
"eventId": 98,
"eventStatus": "IN_PROGRESS",
"evtSession": [
{
"postCode": "BA10 0AN",
"townOrCity": "Bruton",
"dates": {
"from": "2022-08-11T08:00:00Z",
"to": "2022-08-11T09:30:00Z"
}
}
]
}
]
}
],
"@odata.nextLink": "https://demosearch.search.windows.net/indexes('<indexname>')/docs?api-version=2019-05-06&search=%2A&$skip=50"
}

我正在尝试使用下面的curl从Azure搜索中获取[“townOrCity”:“阿伯丁市”]的数据。

curl --location --request POST 'https://demosearch.search.windows.net/indexes/<indexname>/docs/search?api-version=2019-05-06' \
--header 'api-key: XXXX' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{"count":false,"top":0,"skip":30,"search":"*","orderby":"search.score() desc","filter":"( events/any(evt: evt/evtSession/any(session: search.in(session/townOrCity, '\''Aberdeen City,'\'', '\'','\'') ) ) )","facets":["events/evtSession/townOrCity,count:10000"],"queryType":"full","searchMode":"any"}'

但我没有得到预期的响应,并且值以空数组形式出现:

回应

{
"@odata.context": "https://demosearch.search.windows.net/indexes('<indexname>')/$metadata#docs(*)",
"@search.facets": {
"events/evtSession/townOrCity": []
},
"value": []
}

请帮助我使用正确的有效负载来过滤掉带有“townOrCity”的记录:“Aberdeen City”,或者我在索引配置或其他方面做错了什么?

“townOrCity”:“阿伯丁市”

编辑1:

注意:阿伯丁市后面提到的逗号导致了该问题。如果我在没有逗号的情况下尝试同样的事情,一切都会像魅力一样。但要求是支持逗号。

$filter=( events/any(evt: evt/evtSession/any(session: search.in(session/townOrCity, 'Aberdeen City,', ',') ) ) ) 

索引中存在数据,但仍然没有正确应用过滤器,而是在响应中没有给出任何记录。

最佳答案

这有效:

$filter=( events/any(evt: evt/evtSession/any(session: search.in(session/townOrCity, 'Aberdeen City,', '|') ) ) )

search.in 函数有两个重载:

search.in(variable, valueList)
search.in(variable, valueList, delimiters)

由于分隔符,我的 valueList 中的逗号被删除,因此实际值发生了变化。显然它是完全匹配的,因此返回了空响应。

https://learn.microsoft.com/en-us/azure/search/search-query-odata-search-in-function

关于azure - 无法根据索引 json 数据中的特定键从 Azure 搜索中筛选记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73307902/

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