如何处理多词同义词

问题描述 投票:0回答:1

我试图了解我在几种情况下通过Elastic搜索获得的结果。我定义了以下同义词列表:

"product insert, product inserts, qc package, qc package inserts, qc package insert, package insert => package inserts"

我希望将箭头左侧的所有术语都视为右侧的术语。这是我的索引设置:

PUT /test_index
{
  "settings": {
    "index": {
      "analysis": {
        "filter": {
          "my_syn_filt": {
            "tokenizer": "keyword",
            "type": "synonym",
            "synonyms": [
              "product insert, product inserts, package inserts, qc package, qc packages, qc insert, qc inserts, package insert, qc package insert, qc package inserts => package inserts"
            ]
          }
        },
        "analyzer": {
          "my_synonyms": {
            "filter": [
              "lowercase",
              "my_syn_filt"
            ],
            "tokenizer": "keyword"
          }
        }
      }
    }
  }
}

我的问题是,当我搜索几个词-“产品插入”时,没有得到预期的结果。但是“产品插入”效果很好。我的配置有问题吗?我错过了一步吗?

elasticsearch nest
1个回答
0
投票

我认为您缺少mapping部分,因此需要将其与您的字段进行映射,并可以通过如下所示的synonyms进行搜索,

{
    "settings": {
        "index" : {
            "analysis" : {
                "filter" : {
                    "synonym_filter" : {
                        "type" : "synonym",
                        "synonyms" : [
                            "product insert, product inserts, package inserts, qc package, qc packages, qc insert, qc inserts, package insert, qc package insert, qc package inserts => package inserts"
                        ]
                    }
                },
                "analyzer" : {
                    "synonym_analyzer" : {
                        "tokenizer" : "standard",
                        "filter" : ["lowercase", "synonym_filter"] 
                    }
                }
            }
        }
    },
    "mappings": {
            "properties": {
              "title": { 
                "type": "text",
                "analyzer": "synonym_analyzer"
              }
            }     
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.