首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Azure Search中处理多个单词/短语同义词

如何在Azure Search中处理多个单词/短语同义词
EN

Stack Overflow用户
提问于 2019-07-25 17:55:35
回答 1查看 282关注 0票数 2

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

多词同义词

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

然而,在我的例子中,我得到了子单词的匹配。

我的synonymMap看起来像这样:

代码语言:javascript
复制
{"name":"map",

"format":"solr",

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

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

我在?search="vomiting"之后收到的内容是:

代码语言:javascript
复制
 {
            "@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>)"
                ],

我期待着:

代码语言:javascript
复制
{
    "@search.score": 1.0405536,
    "@search.highlights": {
        "disciplines/services/translatedName": [
            "<em>Gastroenterology (acute and chronic)</em>",
        ],

我做错了什么吗?

我试着将主词删减为一个词,比如胃肠病学,但其中一些根本无法删减。提供像synonyms => "Gastroenterology (acute and chronic)"这样的报价也是行不通的。

已更新

我想知道为什么我会认为有问题。好吧,我提供了:

代码语言:javascript
复制
{"name":"map",

"format":"solr",

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

并实际使用:

代码语言:javascript
复制
{"name":"map",

"format":"solr",

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

在这种情况下,I vae 4结果:

代码语言:javascript
复制
"@odata.count": 4,
"value": [
        {
            "@search.score": 1.0137179,
            "@search.highlights": {
                "disciplines/services/translatedName": [
                    "<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>)"
                ],
                "equipment/translatedName": [
                    "Emergency <em>and</em> crictial care",
                    "In house skin <em>and</em> ear cyology"
                ],
                "disciplines/translatedName": [
                    "Anaesthesia <em>and</em> analgesia",
                    "Emergency <em>and</em> critical care"
                ]
            },
          ...
        {
            "@search.score": 0.33542877,
            "@search.highlights": {
                "disciplines/services/translatedName": [
                    "<em>Chronic</em> pain management"
                ],
                "disciplines/translatedName": [
                    "Anaesthesia <em>and</em> analgesia"
                ]
            },
        ...
        {
            "@search.score": 0.13757591,
            "@search.highlights": {
                "equipment/translatedName": [
                    "Emergency <em>and</em> crictial care"
                ],
                "disciplines/translatedName": [
                    "Emergency <em>and</em> critical care"
                ]
            },
         ...
        {
            "@search.score": 0.07112321,
            "@search.highlights": {
                "disciplines/services/translatedName": [
                    "<em>Chronic</em> pain management"
                ]
            },

你能给我解释一下在那种情况下它是怎么工作的吗?

EN

回答 1

Stack Overflow用户

发布于 2019-08-07 06:13:38

Azure Search确实支持多个单词的同义词,并且在您的案例中的结果与预期一致。这里有几件事需要说明。

First ?search="vomiting"将返回与文档中任意位置的“呕吐”或指定同义词匹配的文档。集合disciplines/name中包含多个单词的同义词Gastroenterology (acute and chronic)与您的查询匹配,从而得到要返回的文档。

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

你可以通过索引一个只包含Gastroenterology (acute and chronic)的测试文档,然后索引另一个只包含acute and chronic的测试文档来测试这一点。查询结果应该只返回第一个文档。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57199211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档