如何在Azure搜索中搜索#

时间:2017-09-12 11:28:19

标签: elasticsearch azure-search

嗨我有一个字符串字段,它有一个nGram分析器。

我们的查询是这样的。

$count=true&queryType=full&searchFields=name&searchMode=any&$skip=0&$top=50&search=/(.*)Site#12(.*)/

我们正在搜索的测试有Site#123

上述查询将适用于除#以外的所有其他字母数字字符。我知道如何才能使这项工作。

2 个答案:

答案 0 :(得分:0)

您的字符串被空格和标点符号Http:// panel. example. com to https:// panel. example. com Http:// www. panel. example .com to https:// panel. example .com 标记。如果要搜索#和其他标点字符,可以考虑仅使用空格进行令牌化。或者根本不应用任何标记化并将整个字符串视为单个标记。

答案 1 :(得分:0)

如果您使用的是标准标记生成器,则会从索引文档中删除“#”字符,因为它被视为分隔符。对于索引,您可以使用不同的标记生成器,例如空白标记生成器,或者使用映射字符过滤器(下划线'_'不被视为分隔符)将'#'字符替换为另一个字符,例如'_'。您可以使用Analyze API测试分析仪的行为:https://docs.microsoft.com/rest/api/searchservice/test-analyzer

重要的是要知道不分析正则表达式查询的查询术语。这意味着分析器不会从正则表达式中删除“#”字符。您可以在此处了解有关Azure搜索中查询处理的更多信息:How full text search works in Azure Search