如何在Azure Search中实现不区分大小写的电子邮件搜索

时间:2018-06-06 17:14:09

标签: azure lucene azure-search analyzer

我在其中一个项目中使用Azure搜索,并且要求搜索不区分大小写的电子邮件地址。 例如。 emusk @ gmail.com,EMusk @ gmail.com,eMusk@gmail.com都应该返回相同的结果。 我在创建索引时使用自定义分析器(uax_url_email) https://docs.microsoft.com/en-in/rest/api/searchservice/custom-analyzers-in-azure-search#AnalyzerTable

这是索引的部分

            [{
                "name": "Username",
                "type": "Edm.String",
                "searchable": true,
                "filterable": false,
                "sortable": false,
                "facetable": false,
                "analyzer": "email_analyzer"
            },              

        ],
        "analyzers": [
            {
                "name": "email_analyzer",
                "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
                "tokenizer": "uax_url_email",
                "tokenFilters": ["lowercase"]
            }]

但搜索不适用于Emusk@gmail.com。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

我使用相同的自定义分析器创建了一个索引,并通过不区分大小写的匹配获得了预期的结果。我使用了一个简单的查询 - search=EMusk@gmail.com

您可以分享使用的确切查询吗?

您还可以检查是否正在对字段进行分析和索引。您可以将Analyze API用于此目的。

答案 1 :(得分:0)

所以,这是我所做的解决方法。我的数据库电子邮件包含大写字母,如'EMusk@gmail.com' 我要求能够搜索包含以及完整搜索,这意味着: emusk @ gmail.com,EMusk @ gmail.com,musk @gmail.com都应该返回结果。 所以,我做了以下事情:

  1. 创建了一个视图并将电子邮件更改为选择下限(电子邮件)为 电子邮件。
  2. 因此,我的Azure搜索索引包含所有小写电子邮件。
  3. 然后 我正在使用/../&queryType=full来搜索电子邮件。 示例:/。 EMUSK@gmail.com。 /& queryType = full。