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

如何在Azure search中实现不区分大小写的电子邮件搜索,azure,lucene,azure-cognitive-search,analyzer,Azure,Lucene,Azure Cognitive Search,Analyzer,我在我的一个项目中使用Azure Search,需要搜索不区分大小写的电子邮件地址。 例如。emusk@gmail.com, EMusk@gmail.com, eMusk@gmail.com应该都返回相同的结果。 我在创建索引(uax_url_电子邮件)时使用自定义分析器 这是索引的一部分 [{ "name": "Username", "type": "Edm.String",

我在我的一个项目中使用Azure Search,需要搜索不区分大小写的电子邮件地址。 例如。emusk@gmail.com, EMusk@gmail.com, eMusk@gmail.com应该都返回相同的结果。 我在创建索引(uax_url_电子邮件)时使用自定义分析器

这是索引的一部分

            [{
                "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. 有人能帮忙吗?

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

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


您还可以检查字段是否得到了正确的分析和索引。您可以将用于此目的。

因此,以下是我所做的解决方法。我的数据库中有一封(多封)包含大写字母的电子邮件,如EMusk@gmail.com' 我要求能够搜索包含内容以及完整搜索,这意味着: emusk@gmail.com, EMusk@gmail.com, musk@gmail.com应该全部返回结果。 所以,我做了以下几件事:

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

  • 是的,Ishan,我可以这样做,但是对于简单的查询类型,我不能搜索包含的内容。例如musk@gmail.com在这种情况下。由于您使用的是
    uax\u url\u电子邮件
    tokenizer,因此该电子邮件被索引为单个令牌。不能使用简单查询语法执行包含查询。您必须使用通过lucene查询语法支持的regexp查询。这应该适用于您的特殊情况。搜索=/*musk@gmail.com/&queryType=full查看。