【问题标题】:How to search for # in Azure Search如何在 Azure 搜索中搜索 #
【发布时间】:2018-02-20 20:21:41
【问题描述】:

您好,我有一个带有 nGram 分析器的字符串字段。

我们的查询是这样的。

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

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

上述查询将适用于除 # 之外的所有其他字母数字字符。知道我怎样才能完成这项工作。

【问题讨论】:

    标签: elasticsearch azure-cognitive-search


    【解决方案1】:

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

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

    【讨论】:

    • 我可以通过转义 # .. WITH '\\' 来完成它
    【解决方案2】:

    您的字符串被空格和标点符号化,例如#。如果您想搜索 # 和其他标点符号,您可以考虑仅通过空格进行标记。或者可能根本不应用任何标记化并将整个字符串视为单个标记。

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 2018-02-13
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      相关资源
      最近更新 更多