Azure Search - regex search



我正在尝试配置 Azure 搜索以查找一些具有特殊字符的字符串,例如 美国广播公司*德国

当我使用"ABC*DEF"查找完整术语时,它运行良好。

如果我想使用正则表达式术语,问题就来了:

  • 当我使用部分术语时,例如/(.*)ABC(.*)/,结果没有问题
  • 当我使用部分术语时,例如/(.*)DEF(.*)/,结果没有问题
  • 但是当我试图寻找类似/(.*)C*D(.*)/的东西时,结果是空的。

我使用的是标准分析仪。我也尝试了关键字分析器,但这样正则表达式搜索根本不起作用。

有什么建议吗?

您将无法使用标准分析器创建与 ABC*DEF 匹配的正则表达式。

如果使用"标准"分析器通过分析器 api 运行"ABC*DEF",您将看到ABC*DEF在索引时分为 2 个令牌 ->"ABC""DEF"。不会分析正则表达式,但是,它们需要匹配索引中存在的令牌。

由于索引中不存在ABC*DEF(仅存在"ABC"和"DEF"(,因此无法使用要搜索的表达式找到它。

使用"关键字"分析器会将整个字段保留为单个标记,因此,如果字段"仅"包含表达式ABC*DEF,则正则表达式将对其进行处理,但是,如果ABC*DEF是较大文本段落的一部分,那么这可能不是您想要使用的。

最好的办法是创建自定义分析器,以保留与您的用例相关的特殊字符的方式标记文本。

如果您正在寻找特殊字符,为什么不丢弃普通字符?

[^w]

最新更新