我正在尝试配置Azure搜索,以查找一些具有特殊字符的字符串,例如ABC*DEF。
当我使用"ABC*DEF"寻找一个完整的术语时,它是完美的。
如果我想使用正则表达式,问题就来了:
/(.*)ABC(.*)/这样的部分术语时,结果没有问题。/(.*)DEF(.*)/这样的部分术语时,结果没有问题。/(.*)C\*D(.*)/的东西时,结果是空的。我用的是标准分析器。我也尝试过关键字分析器,但那样的话regex搜索根本不起作用。
有什么建议吗?
发布于 2020-06-19 21:40:46
您将无法使用标准分析器创建与ABC*DEF匹配的regex表达式。
如果使用“标准”分析器通过"ABC\*DEF"运行分析器api,您将看到ABC*DEF在索引时被划分为两个标记:->、"ABC"和"DEF"。没有分析Regex表达式,但是它们需要匹配索引中存在的令牌。
因为索引中不存在ABC\*DEF (只有"ABC“和"DEF”存在),所以您将无法使用正在搜索的表达式找到它。
使用“关键字”分析器将整个字段保持为单个标记,因此如果字段“仅”包含表达式ABC\*DEF,那么regex表达式将在其上工作,但是,如果ABC\*DEF是较大文本段落的一部分,那么这可能不是您想要使用的。
最好的选择是创建一个自定义分析器,它以保留与用例相关的特殊字符的方式标记文本。
发布于 2020-06-19 21:26:52
如果你在寻找特殊的字符,为什么不放弃普通的字符呢?
[^\w]https://stackoverflow.com/questions/62478595
复制相似问题