我正在尝试在自动零件产品的描述字段上使用Microsoft English分析器。我遇到了一些带有十进制测量值的意外行为,因此我通过analytics API对其进行了运行以进行确认,看起来lemmatization算法正在使用小数点作为信号/分度符,将整数和十进制值作为两个独立的记号进行分解认为这不是理想的行为。
例如。
文本:“ M12-1.50车轮螺栓-14mm。十六进制,23.12mm。螺纹长度14mm。
被分解为
{
"@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
}
]
}
寻找12mm车轮螺栓的人将会返回。
任何帮助将不胜感激:)
谢谢!
答案 0 :(得分:0)
这是预期的行为。 Microsoft English Analyzer将小数作为定界符并生成2个单独的标记。
如果要在几个字段上执行精确匹配(例如:搜索“ M12-1.50车轮螺栓-14mm。十六进制,23.12mm”),那么我建议使用带有小写标记器的“关键字”分析器。
您可以在此处了解更多信息:https://docs.microsoft.com/en-us/rest/api/searchservice/custom-analyzers-in-azure-search