Добавление другого ответа на основе ваших комментариев выше. Таким образом, в лучшем случае, что вы хотите сделать, это префикс, суффикс и подстановочный поиск. Таким образом, если имя пользователя было user246392, вы можете найти его, набрав «use», «392» или даже «er246». Префикс прост, потому что вы можете искать использовать *, и он найдет его.
Кендра Литтл написал очень хороший пост в блоге о том, как использовать RegEx с помощью поиска Azure , который может позволить вам выполнить полный подстановочный знак вашего запроса (т. Е. Выполнить поиск "392").
Если вы хотите выполнить поиск по суффиксу, вы можете сделать довольно эффективный трюк, если создадите новое поле, которое будет представлять собой пользовательский анализатор, который будет индексировать слова в обратном порядке. Вот пример схемы индекса, которая позволила бы это (над полем СуффиксName)
{
"name":"people",
"fields": [
{ "name":"id", "type":"Edm.String", "key":true, "searchable":false },
{"name": "suffixName", "type": "Edm.String", "searchable":true, "indexAnalyzer":"suffixIndexingAnalyzer", "searchAnalyzer":"reverseText"}
],
"analyzers": [
{
"@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
"name": "suffixIndexingAnalyzer",
"tokenizer": "keyword_v2",
"tokenFilters": [
"asciifolding",
"lowercase",
"reverse",
"my_edgeNGramForSuffix"
],
"charFilters": []
},
{
"@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
"name": "reverseText",
"tokenizer": "classic",
"tokenFilters": [
"lowercase",
"reverse"
],
"charFilters": []
}
],
"tokenFilters":[
{
"@odata.type": "#Microsoft.Azure.Search.EdgeNGramTokenFilterV2",
"name": "my_edgeNGramForSuffix",
"minGram": 2,
"maxGram": 25,
"side": "front"
}
]
}