如何在Azure search中实现不区分大小写的电子邮件搜索
我在我的一个项目中使用Azure Search,需要搜索不区分大小写的电子邮件地址。 例如。emusk@gmail.com, EMusk@gmail.com, eMusk@gmail.com应该都返回相同的结果。 我在创建索引(uax_url_电子邮件)时使用自定义分析器 这是索引的一部分如何在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",
[{
"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应该全部返回结果。 所以,我做了以下几件事:
是的,Ishan,我可以这样做,但是对于简单的查询类型,我不能搜索包含的内容。例如musk@gmail.com在这种情况下。由于您使用的是
uax\u url\u电子邮件
tokenizer,因此该电子邮件被索引为单个令牌。不能使用简单查询语法执行包含查询。您必须使用通过lucene查询语法支持的regexp查询。这应该适用于您的特殊情况。搜索=/*musk@gmail.com/&queryType=full查看。