Я безуспешно пробовал поиск в Phoenetic с помощью Azure Search.Моя цель состоит в том, чтобы разработать конфигурацию индекса, которая может обрабатывать опечатки и обеспечивать фонетический поиск для конечных пользователей.
С помощью приведенной ниже конфигурации и примеров данных я пытался найти преднамеренно неправильно написанные слова, такие как «softvare» или «Алик.Я получил результаты для «Алек», спасибо за фонетический анализатор;но не получил никаких результатов для 'softvare'.
Похоже, что это требование фонетического поиска не сработает.
Единственный вариант, который я нашел, - использовать карту синонимов.Основная ошибка заключается в том, что я не могу использовать анализатор фонетики / пользовательский анализ вместе с синонимами: (
Какие стратегии вы бы порекомендовали для обработки опечаток?
поисковый запросиспользуется
?api-version=2017-11-11&search=alec
?api-version=2017-11-11&search=softvare
Вот индекс конфигурации
"name": "phonetichotels",
"fields": [
{"name": "hotelId", "type": "Edm.String", "key":true, "searchable": false},
{"name": "baseRate", "type": "Edm.Double"},
{"name": "description", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "analyzer":"my_standard"},
{"name": "hotelName", "type": "Edm.String", "analyzer":"my_standard"},
{"name": "category", "type": "Edm.String", "analyzer":"my_standard"},
{"name": "tags", "type": "Collection(Edm.String)", "analyzer":"my_standard"},
{"name": "parkingIncluded", "type": "Edm.Boolean"},
{"name": "smokingAllowed", "type": "Edm.Boolean"},
{"name": "lastRenovationDate", "type": "Edm.DateTimeOffset"},
{"name": "rating", "type": "Edm.Int32"},
{"name": "location", "type": "Edm.GeographyPoint"}
],
Анализатор (частьсоздание индекса)
"analyzers":[
{
"name":"my_standard",
"@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
"tokenizer":"standard_v2",
"tokenFilters":[ "lowercase", "asciifolding", "phonetic" ]
}
]
Анализ ввода и вывода API для «программного обеспечения»
{
"analyzer":"my_standard",
"text": "software"
}
{
"@odata.context": "https://ctsazuresearchpoc.search.windows.net/$metadata#Microsoft.Azure.Search.V2017_11_11.AnalyzeResult",
"tokens": [
{
"token": "SFTW",
"startOffset": 0,
"endOffset": 8,
"position": 0
}
]
}
Анализ ввода и вывода API для «softvare»
{
"analyzer":"my_standard",
"text": "softvare"
}
{
"@odata.context": "https://ctsazuresearchpoc.search.windows.net/$metadata#Microsoft.Azure.Search.V2017_11_11.AnalyzeResult",
"tokens": [
{
"token": "SFTF",
"startOffset": 0,
"endOffset": 8,
"position": 0
}
]
}
Пример данныхчто я загрузил
{
"@search.action": "upload",
"hotelId": "5",
"baseRate": 199.0,
"description": "Best hotel in town for software people",
"hotelName": "Fancy Stay",
"category": "Luxury",
"tags": ["pool", "view", "wifi", "concierge"],
"parkingIncluded": false,
"smokingAllowed": false,
"lastRenovationDate": "2010-06-27T00:00:00Z",
"rating": 5,
"location": { "type": "Point", "coordinates": [-122.131577, 47.678581] }
},
{
"@search.action": "upload",
"hotelId": "6",
"baseRate": 79.99,
"description": "Cheapest hotel in town ",
"hotelName": " Alec Baldwin Motel",
"category": "Budget",
"tags": ["motel", "budget"],
"parkingIncluded": true,
"smokingAllowed": true,
"lastRenovationDate": "1982-04-28T00:00:00Z",
"rating": 1,
"location": { "type": "Point", "coordinates": [-122.131577, 49.678581] }
},
При правильной конфигурации, я должен был получить результаты даже со словами с ошибками.