Azure Search Microsoft Английский анализатор поиска - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь использовать анализатор английского языка Microsoft в поле описания для продуктов autopart. Я столкнулся с некоторыми неожиданными поведениями с десятичными значениями измерений, поэтому я провел его через API анализа для подтверждения, и похоже, что алгоритм лемматизации использует десятичную точку в качестве сигнала / делимера для разбиения целого и десятичного значений как двух отдельных токенов, которые я надеваю не думаю, что это желаемое поведение.

Например.

Текст: "M12-1.50 Колесный болт - 14 мм. Шестигранник, 23,12 мм. Длина резьбы 14 мм.

Разбивается как

{
"@odata.context": "https://site.search.windows.net/$metadata#Microsoft.Azure.Search.V2017_11_11.AnalyzeResult",
"tokens": [
 {
    "token": "m12-1",
    "startOffset": 0,
    "endOffset": 5,
    "position": 0
    },
    {
    "token": "m12",
    "startOffset": 0,
    "endOffset": 3,
    "position": 0
    },
    {
    "token": "1",
    "startOffset": 4,
    "endOffset": 5,
    "position": 1
    },
    {
    "token": "nn1",
    "startOffset": 4,
    "endOffset": 5,
    "position": 1
    },
    {
    "token": "50",
    "startOffset": 6,
    "endOffset": 8,
    "position": 2
    },
    {
    "token": "nn50",
    "startOffset": 6,
    "endOffset": 8,
    "position": 2
    },
    {
    "token": "wheel",
    "startOffset": 9,
    "endOffset": 14,
    "position": 3
    },
    {
    "token": "bolt",
    "startOffset": 15,
    "endOffset": 19,
    "position": 4
    },
    {
    "token": "14mm",
    "startOffset": 22,
    "endOffset": 26,
    "position": 5
    },
    {
    "token": "hex",
    "startOffset": 29,
    "endOffset": 32,
    "position": 6
    },
    {
    "token": "23",
    "startOffset": 34,
    "endOffset": 36,
    "position": 7
    },
    {
    "token": "nn23",
    "startOffset": 34,
    "endOffset": 36,
    "position": 7
    },
    {
    "token": "12mm",
    "startOffset": 37,
    "endOffset": 41,
    "position": 8
    },
    {
    "token": "thread",
    "startOffset": 44,
    "endOffset": 50,
    "position": 9
    },
    {
    "token": "length",
    "startOffset": 51,
    "endOffset": 57,
    "position": 10
    },
    {
    "token": "14mm",
    "startOffset": 58,
    "endOffset": 62,
    "position": 11
    }
]
}

Что будет возвращено людям, которые ищут колесные болты 12 мм.

Любая помощь будет оценена :)

Спасибо!

1 Ответ

0 голосов
/ 30 августа 2018

Это ожидаемое поведение. Microsoft English Analyzer будет обрабатывать десятичное число как разделитель и генерировать 2 отдельных токена.

Если вы хотите выполнить точное совпадение по нескольким полям (например, выполнить поиск «Колесный болт M12-1.50 - шестнадцатеричный шестнадцатеричный, 23,12 мм»), то я бы предложил использовать анализатор «ключевое слово» с токенайзером в нижнем регистре.

Подробнее об этом можно прочитать здесь: https://docs.microsoft.com/en-us/rest/api/searchservice/custom-analyzers-in-azure-search

...