【问题标题】:character "@" in regex azure search lucene正则表达式天蓝色搜索lucene中的字符“@”
【发布时间】:2018-06-04 18:54:28
【问题描述】:

在 Azure 搜索中使用包含 @ 字符的文本执行搜索时,不会返回信息。

【问题讨论】:

  • 应该返回 :"value": [ { "@search.score": 0.57735026, "RowKey": "7da261ba-8d90-4c24-bfcf-0ec3b99b5d0b", "PartitionKey": "Aplicacion 2" ,“IP”:“10.10.10.10”,“CodigoHash”:“44A41D49B5B5F97CFBCE5C6F3F6AC93C1B23ECAE”,“TipoEvento”:“SISTEMA”,“TipoMensaje”:“EXCEPCION”,“EntidadOrigen”:空,“ContenidoMensaje”:“{ \”mensaje \": \"prueba@dnp.gov.co\" }", "Usuario": "EMANTILLAS", "FechaCreacion": "2016-08-09T11:02:15.702Z" }

标签: azure lucene.net azure-cognitive-search


【解决方案1】:

您将哪个分析器用于搜索字段?如果您没有指定分析器,则默认为丢弃标点符号和符号的 lucene 标准分析器,并且电子邮件地址 abc@bcd.gov.co 被标记为 、 、 和 。如文档所述,正则表达式搜索查询仅适用于单个标记化的术语。正则表达式 /.bcd.gov.co./ 找不到电子邮件地址,因为它与任何标记化的术语都不匹配。您可以使用空白分析器或构建不丢弃标点符号或符号的custom one,以在整个地址上应用正则表达式匹配。

希望这会有所帮助。谢谢。

内特

【讨论】:

  • 嗨 Nate,我没有指定分析器,如果我需要一个自定义分析器来允许特殊字符 (,; -. _ @) 应该是这样吗?你可以帮我举个例子。提前致谢。
  • 这适用于我的电子邮件:"analyzers":[ { "name":"analizadorEmail", "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer", "tokenizer" :"uax_url_email" } ] 但不适用于 (,; -. _)
  • 显然它可以通过创建包含特殊字符的 PatternTokenizer 来工作,我不确定这是否是一个好的做法,但可以工作
【解决方案2】:

这里是示例代码

{ "name": "用户名", "type": "Edm.String", “可搜索”:是的, “可过滤”:假, “可排序”:错误, “面”:假, “分析器”:“email_analyzer”

},

“分析器”:[ { "name": "email_analyzer", "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer", “标记器”:“uax_url_email” }

]

【讨论】:

  • 一般来说,如果答案包含对代码的用途的解释,以及为什么在不介绍其他人的情况下解决问题的原因,答案会更有帮助。感谢您提高答案的参考价值并使其更易于理解!
猜你喜欢
  • 2022-08-18
  • 2021-06-22
  • 2013-09-23
  • 1970-01-01
  • 2011-07-28
  • 2021-11-30
  • 2017-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多