【发布时间】:2018-01-10 03:09:56
【问题描述】:
我们的索引看起来像(这是来自查询资源管理器):
"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 存储中一次,这就是为什么我们有一个密钥,xxx 是 blob 存储密钥。
我一直在阅读文档OData Expression Syntax for Azure Search,但我没有看到允许我们使用集合中的开头或包含进行过滤的示例。
我试过了
var searchParameters = new SearchParameters()
{
Filter = @"paths/any(t: t gt '\\Server\Share')",
};
我们需要能够搜索给定路径的文件内容。
编辑
我们的CosmosDb 数据库拥有呈现给用户的数据视图,该数据库拥有指向 blob 的 links,因此另一种选择是索引 CosmosDb 并让索引器跟随链接对于 blob,文档并不表明这是可能的。或者,我们是否会更好地编写自己的indexer 并将其托管为azure function。
每个文档有一行和一个指向 blob 的指针,许多文档行可以指向同一个 blob。
【问题讨论】:
-
好吧,如果有效,OData 语法将是
paths/any(t: startswith(t, '\\Server\Share'))。 -
嗯,好像你不能在带有搜索的 lambdas 中使用任意函数。您可以查看文档以获取更多信息:docs.microsoft.com/en-us/rest/api/searchservice/…
-
是的,我试过了 :) 我现在正在阅读文档 :) ... 再次 :) 我认为它不支持。
标签: azure azure-cognitive-search