搜索文本“\**”抛出错误 "Failed to parse query string." 但“\*”、“\*~”和“\~~”有效

Search text "\**" throws error "Failed to parse query string." but "\*", "\*~" and "\~~" works

如果用户开始搜索,我们会自动创建一个开头表达式,例如用户输入:"Hello" => azure 搜索输入 "Hello*"。

如果用户输入特殊字符,如“+”、“-”、“!”、“*”、“~”等(完整列表:https://msdn.microsoft.com/en-us/library/azure/mt589323.aspx#bkmk_syntax),我们会自动将其转义带有“\”,例如用户输入:He**o => azure 搜索输入:He\*\*o*

这很好用,但如果用户输入的是“*”(=>“\**”),azure 搜索会抛出错误 "Failed to parse query string."。 “\*”、“\*~”和“\~~”不会发生这种情况。

我怎样才能避免这种情况,“\**”是唯一的例外吗?

您附加到查询词的通配符“*”启用前缀搜索查询。前缀搜索查询“\**”返回 400,因为 Azure 搜索不允许将“*”用作前缀搜索查询中的第一个字符,无论它是否被转义。字符“*”是前缀搜索查询不能以其开头的唯一字符。非常感谢您报告此事。在这种情况下,错误消息不明确,我们将对其进行改进。

顺便问一下,您是否打算在发出搜索查询“\**”时查找包含以“*”开头的术语的文档?

内特