【发布时间】:2020-12-03 08:55:37
【问题描述】:
我正在使用 Microsoft.Azure.Search SDK 运行包含同义词扩展的 Azure 认知服务搜索。我的SynonymMap如下:
private async Task UploadSynonyms()
{
var synonymMap = new SynonymMap()
{
Name = "desc-synonymmap",
Synonyms = "\"dog\", \"cat\", \"rabbit\"\n "
};
await m_SearchServiceClient.SynonymMaps.CreateOrUpdateAsync(synonymMap);
}
这映射到Animal.Name,如下所示:
index.Fields.First(f => f.Name == nameof(Animal.Name)).SynonymMaps = new[] { "desc-synonymmap" };
我正在尝试同时使用模糊匹配和同义词匹配,例如:
- 如果我搜索“狗”,它会返回任何
Animal以及“狗”、“猫”或“兔子”的Name - 如果我搜索“dob”,它会模糊匹配“dog”并返回任何带有“dog”、“cat”或“rabbit”
Name的Animal,因为它们都是“dog”的同义词
我的搜索方法如下:
private async Task RunSearch()
{
var parameters = new SearchParameters
{
SearchFields = new[] { nameof(Animal.Name) },
QueryType = QueryType.Full
};
var results = await m_IndexClientForQueries.Documents.SearchAsync<Animal>("dog OR dog~", parameters);
}
当我搜索“狗”时,它会正确返回任何带有狗/猫/兔子的结果作为它的名称。但是当我搜索 'dob' 时,它只返回任何匹配 'dog',而不是任何同义词。
This answer from January 2019 声明“同义词扩展不适用于通配符搜索词;前缀、模糊和正则表达式词不扩展。”但这个答案是一年多前发布的,从那时起事情可能已经发生了变化。
是否可以在 Azure 认知搜索中同时进行模糊匹配和同义词匹配,或者是否有任何解决方法可以实现这一点?
【问题讨论】:
标签: c# azure-cognitive-search azure-search-.net-sdk