Как реализовать поиск электронной почты без учета регистра в Azure Search - PullRequest
0 голосов
/ 06 июня 2018

Я использую Поиск 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 голосов
/ 13 июня 2018

Итак, вот обходной путь, который я сделал.В моей базе данных были электронные письма, содержащие заглавные буквы, такие как «EMusk@gmail.com». У меня было требование, чтобы иметь возможность выполнять поиск, а также полный поиск, что означает: emusk@gmail.com, EMusk@gmail.com,musk@gmail.com должен все вернуть результат.Итак, я сделал следующие вещи:

  1. Создал представление и изменил адрес электронной почты на Выбор НИЖЕ (адрес электронной почты) в качестве электронной почты.
  2. Итак, мой поисковый индекс Azure содержит все строчные электронные письма.
  3. Затем я использую /../&queryType=full для поиска по электронной почте.Пример: /.EMUSK@gmail.com./&queryType=full.
0 голосов
/ 10 июня 2018

Я создал индекс с тем же пользовательским анализатором и получил ожидаемые результаты с учетом без учета регистра.Я использовал простой запрос - search=EMusk@gmail.com

Можете ли вы поделиться точным запросом?

Вы также можете проверить, правильно ли анализируется и индексируется ли поле.Для этой цели вы можете использовать Analyze API .

...