Моя проблема в том, что когда мы выполняем поиск по имени, используя нечеткий поиск (с интервалом в 2 символа в имени), это не возвращает все возможности.
QueryType is Full
QueryString - "FirstName: gra ~ 2 AND (LastName: \" ***** \ "ИЛИ LastName: /.*\"*****\".*/)"
Я использую точное совпадение ИЛИ a содержит фамилию для этого примера, она будет оставаться постоянной во всех примерах
Результаты :
Если я ищу FirstName: gre ~ 2 в Azure строке поискового запроса, которую мы получаем:
Greg
Gary
Gene
Если я ищу FirstName: gra ~ 2, мы возвращаемся:
Джина
Гари
Если я найду FirstName: grag ~ 2, мы вернемся:
Грег
Гари
Мы знаем, что azure Нечеткий поиск использует расстояние Дамерау-Левенштейна, и кажется, что от «gra» и «gina», и «greg» будет разница в 2 символа, но отображается только один. Кроме того, «grag» в теории должен возвращать и «gina»
Мне интересно, есть ли у кого-нибудь объяснение этому, поскольку оно кажется непоследовательным
Я использовал это для проверки " расстояние "между строками" gra "и" greg "&" gina "
http://fuzzy-string.com/Compare/
Вот ссылка на azure документация по синтаксису Lucene
https://docs.microsoft.com/en-us/azure/search/query-lucene-syntax
Это оба определения полей
{
"name": "FirstName",
"type": "Edm.String",
"searchable": true,
"filterable": true,
"retrievable": true,
"sortable": true,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": "standard.lucene",
"synonymMaps": []
},
{
"name": "LastName",
"type": "Edm.String",
"searchable": true,
"filterable": true,
"retrievable": true,
"sortable": true,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": "standard.lucene",
"synonymMaps": []
}
** Результаты кажутся быть одинаковым независимо от используемой фамилии или нет