如何在Azure搜索中处理多词/短语同义词

时间:2019-07-25 09:55:34

标签: azure-search

根据文章https://azure.microsoft.com/pl-pl/blog/azure-search-synonyms-public-preview/,我应该在synonymMaps中使用多词/短语同义词

多词同义词

在许多全文本搜索引擎中,对同义词的支持仅限于单个单词。我们的团队设计了一种解决方案,允许Azure搜索支持多字同义词。这允许短语查询(“”)在使用同义词时正常运行。如果有人将“热水浴缸”映射到“漩涡浴缸”,然后他们搜索“大型热水浴缸”,Azure搜索将返回包含“大型热水浴缸”和“大型漩涡浴缸”的匹配项。

但是,在我的情况下,我在副词上遇到了问题。

我的synonymMap看起来像:

{"name":"map",

"format":"solr",

"synonyms":"Gastroenterology (acute and chronic),vomiting, diarrhoea, weight loss\n"}

我在搜索索引中有一些文档,其中包含胃肠病学(急性和慢性)等医学学科。

?search="vomiting"之后收到的是:

 {
            "@search.score": 1.0405536,
            "@search.highlights": {
                "disciplines/name": [
                    "<em>Acute</em> <em>and</em> <em>chronic</em> ear disease",
                    "<em>Acute</em> <em>and</em> <em>chronic</em> skin disease",
                    "<em>Gastroenterology</em> (<em>acute</em> <em>and</em> <em>chronic</em>)",
                    "Haematology (<em>acute</em> <em>and</em> <em>chronic</em>)",
                    "Respiratory medicine (<em>acute</em> <em>and</em> <em>chronic</em>)"
                ],

我期望:

{
    "@search.score": 1.0405536,
    "@search.highlights": {
        "disciplines/services/translatedName": [
            "<em>Gastroenterology (acute and chronic)</em>",
        ],

我做错什么了吗?

我曾尝试将主词切成一个单词,例如胃肠病学,但其中一些根本无法切开。 提供诸如synonyms => "Gastroenterology (acute and chronic)"之类的报价也无效。

1 个答案:

答案 0 :(得分:1)

Azure Search确实支持多词同义词,您的情况下的结果符合预期。这里有几件事要讲。

第一个?search="vomiting"将返回与文档中任何地方的“呕吐”或指定同义词匹配的文档。集合Gastroenterology (acute and chronic)中的多词同义词disciplines/name与您的查询匹配,导致文档被返回。

第二个可能是造成混淆的原因是突出显示。 Azure搜索当前不支持短语突出显示。如果与短语查询一起使用,它将突出显示短语中的各个术语。由于匹配的文件在其他地方也有单独的用语,因此所有这些用语都被突出显示。检查Azure search highlights for phrases with double quotes了解更多详细信息。

因此,多词同义词扩展和搜索正在按预期运行。您可以通过索引仅包含Gastroenterology (acute and chronic)的测试文档,然后再索引仅包含{{ 1}}。查询结果应仅返回第一个文档。

如果您对突出显示短语有严格的要求,则在检索搜索结果后必须进行一些客户端处理