集合上的 Azure 搜索筛选器
Azure Search filter on collections
我们的索引看起来像(这是来自查询浏览器):
"value": [
{
"@search.score": 1.5390168,
"key": "xxx",
"content": null,
"fileSize": null,
"filenames": [
"File 1.docx",
"File 1.docx",
"File 1.docx",
],
"paths": [
"\\Server\Share\FolderA",
"\\Server\Share\FolderB",
"\\Server\Share\FolderC",
]
},
这表明 File 1.doc
存在不止一次,但我们将它存储在 azure blob storange 中一次,这就是为什么我们有一个密钥,xxx
是 blob 存储密钥。
我一直在阅读文档 OData Expression Syntax for Azure Search,但我没有看到允许我们使用 startswith 或集合中的 contains 进行过滤的示例。
我试过了
var searchParameters = new SearchParameters()
{
Filter = @"paths/any(t: t gt '\Server\Share')",
};
我们需要能够搜索给定路径的文件内容。
编辑
我们的 CosmosDb
数据库具有向用户表示的数据视图,该数据库具有 links
到 blob,因此另一个选项是索引 CosmosDb
并让索引器跟随 blob 的链接,但文档并未表明这是可能的。或者,我们最好编写自己的 indexer
并将其托管为 azure function
。
我们每个文档有一行和一个指向 blob 的指针,许多文档行可以指向同一个 blob。
我已经用
解决了这个问题
var searchParameters = new SearchParameters()
{
Filter = @"search.ismatch('""\\server\share\path""','paths','simple','all')",
};
我会做更多测试并在需要时更新此答案
我们的索引看起来像(这是来自查询浏览器):
"value": [
{
"@search.score": 1.5390168,
"key": "xxx",
"content": null,
"fileSize": null,
"filenames": [
"File 1.docx",
"File 1.docx",
"File 1.docx",
],
"paths": [
"\\Server\Share\FolderA",
"\\Server\Share\FolderB",
"\\Server\Share\FolderC",
]
},
这表明 File 1.doc
存在不止一次,但我们将它存储在 azure blob storange 中一次,这就是为什么我们有一个密钥,xxx
是 blob 存储密钥。
我一直在阅读文档 OData Expression Syntax for Azure Search,但我没有看到允许我们使用 startswith 或集合中的 contains 进行过滤的示例。
我试过了
var searchParameters = new SearchParameters()
{
Filter = @"paths/any(t: t gt '\Server\Share')",
};
我们需要能够搜索给定路径的文件内容。
编辑
我们的 CosmosDb
数据库具有向用户表示的数据视图,该数据库具有 links
到 blob,因此另一个选项是索引 CosmosDb
并让索引器跟随 blob 的链接,但文档并未表明这是可能的。或者,我们最好编写自己的 indexer
并将其托管为 azure function
。
我们每个文档有一行和一个指向 blob 的指针,许多文档行可以指向同一个 blob。
我已经用
解决了这个问题var searchParameters = new SearchParameters()
{
Filter = @"search.ismatch('""\\server\share\path""','paths','simple','all')",
};
我会做更多测试并在需要时更新此答案