0

字段(所有字段均可过滤)

DocumentName : string
Document_types : ['type1','type2','type3']
Date : Date

我正在使用 .net 库来调用 Azure 搜索 API。

示例 A (ANY) - 我想获取关键字 isText或 Document_types is的所有结果type1

这将如何工作?下面是我正在使用的示例代码。

        var filters = new SearchParameters()
        {
            Filter = "document_types/any(t: search.in(t, 'type1'))",
            Skip = (1 - 1) * 99999999,
            Top = 99999999,
            IncludeTotalResultCount = true,
            OrderBy = new[] { "as_of_date desc" },
            HighlightFields = new[] { "Content" },
            HighlightPreTag = "<span class=\"search-highlight\">",
            HighlightPostTag = "</span>",
            QueryType = QueryType.Full,
            SearchMode = SearchMode.Any
        };
        var results = await indexClient.Documents.SearchAsync("/.*" + query + ".*/", filters);

提前致谢!

4

2 回答 2

1

Azure 搜索中的过滤器文档指出“过滤器将搜索查询限定为文档子集”,即我们不能Or在过滤器和搜索类型之间设置条件。解决方案/解决方法是使用 search.ismatch 将搜索文本转换为过滤器类型。

要获取关键字为 Text 或 Document_types 为 type1 的所有结果,请将 Filter 值更改为:

Filter = "Document_types/any(t: search.in(t, 'type1') or search.ismatch('Text')",

并将 SearchAsync 称为

var results = await indexClient.Documents.SearchAsync("", filters);

请注意,这仅适用于 searchcriteria 不是空字符串,因为 search.in 不接受空字符串作为其第一个参数。

于 2018-05-08T19:22:56.170 回答
0

它与search.ismatch('{0}')函数的使用一起工作。

于 2018-11-19T10:45:37.763 回答