【问题标题】:how to remove exact match from synonyms query and stemming query如何从同义词查询和词干查询中删除完全匹配
【发布时间】:2021-01-11 15:57:21
【问题描述】:

我试图获得只有词干和同义词数据可用的结果。如果文档仅包含完全匹配的短语,则要删除。

例子:

查询:如果我搜索 loss

结果:我得到了 3 个文档,第一个文档仅包含丢失,第二个文档包含丢失、浪费,第三个文档包含丢失和丢失 所以我想删除一个只包含损失的第一个文档。

  body: {
      settings: {
          index: {
              "analysis":{
                    "analyzer":{
                            "my_analyzer": {
                                    "tokenizer": "standard",
                                    "filter": [
                                            "lowercase",
                                    ]
                            },
                            "my_stemmer": {
                                    "tokenizer": "standard",
                                    "filter": [
                                            "custom_english_stemmer"
                                    ]
                            },
                            "analyzer_synonym":{
                                    "tokenizer":"standard",
                                    "filter":[
                                          "lowercase", "synonym"
                                    ]
                            }
                   },
                    "filter":{
                            "synonym":{
                                    "type":"synonym_graph",
                                    "synonyms_path":"synonyms.txt",
                                    "updateable":true,
                                    "lenient": true
                            },
                            "custom_english_stemmer": {
                                    "type": "stemmer",
                                    "name": "english"
                            }
                    }
              }
           }
      mappings: {
          properties: {
              all_text: {
                  type: 'text',
                  search_analyzer: "analyzer_synonym",
                  analyzer: "my_analyzer",
                  fields: {
                    raw: { type:  'text'},
                    stemmer: {type:  'text', analyzer: "my_stemmer"}
                  }
              },
              #transcript: {
              #    type:'nested'
              #}
          }
      }

【问题讨论】:

    标签: node.js elasticsearch


    【解决方案1】:

    可以使用boolean query的must_not子句来实现。

    【讨论】:

    • must_not 删除第二个和第三个文档,因为这两个文档都包含丢失短语
    • @RakeshJain 你能分享你的映射,示例文档吗?
    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2014-10-21
    相关资源
    最近更新 更多