当前位置: 首页 > 知识库问答 >
问题:

返回意外结果的Elasticsearch

宗弘扬
2023-03-14

我使用了以下映射:我修改了英语分析器来使用ngram分析器,如下所示,这样我应该能够在以下情况下进行搜索:1]部分搜索和特殊字符搜索2]以获得语言分析器的优势

{
    "settings": {
        "analysis": {
            "analyzer": {
                "english_ngram": {
                    "type": "custom",
                    "filter": [
                        "english_possessive_stemmer",
                        "lowercase",
                        "english_stop",
                        "english_stemmer",
                        "ngram_filter"
                    ],
                    "tokenizer": "whitespace"
                }
            },
            "filter": {
                "english_stop": {
                    "type": "stop"
                },
                "english_stemmer": {
                    "type": "stemmer",
                    "language": "english"
                },
                "english_possessive_stemmer": {
                    "type": "stemmer",
                    "language": "possessive_english"
                },
                "ngram_filter": {
                    "type": "edge_ngram",
                    "min_gram": 1,
                    "max_gram": 25
                }
            }
        }
    },
    "mappings": {
    "movie": {
      "properties": {
        "title": {
          "type": "string",
          "fields": {
            "en": {
              "type":     "string",
              "analyzer": "english_ngram"
            }
          }
        }
      }
    }
  }
}

将我的数据索引如下:

   PUT http://localhost:9200/movies/movie/1
    {
        "title" : "$peci@l movie"
    }
{
    "query": {
        "multi_match": {
            "query":    "$peci#44 m11ov",
            "fields": ["title.en"],
            "operator":"and",
            "type":     "most_fields",
            "minimum_should_match": "75%"
        }
    }
}

共有1个答案

黄磊
2023-03-14

这是ngram标记化的结果。当标记字符串$peci@l movie时,分析器将生成$$p$pe等标记。尽管这些匹配会比完整的匹配得分低。如果排除这些假阳性匹配对您至关重要,可以尝试使用min_score选项https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-min-score.html设置阈值

 类似资料:
  • 问题内容: 我正在尝试使用Java的SimpleDateFormat来解析带有以下代码的日期字符串。 我期待一些解析错误。但有趣的是,它打印以下字符串。 无法推理出来。有人可以帮忙吗? 谢谢 问题答案: 已将其解析为 月份 号2011,因为month()是日期模式的第一部分。 如果将2011个月加到28年,则得到195年。 2011个月是167年零7个月。七月是第七个月。您将02指定为日,将28指

  • 问题内容: 我正在使用python 3.8.2和bs4 BeautifulSoup。我试图找到一个标记的所有实例,并在结果集中列出每个实例,每行一个。但是,返回的结果集包含的行数多于网站的原始内容。这是因为结果集的第一行包含标记的所有实例。接下来的行包含除第一个实例以外的所有实例,第三行包含除第一个和第二个实例以外的所有实例,依此类推,以此类推,并包含结果集的其余部分。 这是代码: 我如何获得它,

  • [`const express=require('express');const app=express();const https=require('https'); 常量url=“https://api.thevirustracker.com/free-api?countrytimeline=US”; app.get(“/”,(req,res)=>{res.send(“server is ru

  • 为什么in\u array()有时表现得如此奇怪,并返回如此意外的结果? 我们来看几个例子: 嗯?这里发生了什么!? (几年前,我开始怀疑这种奇怪的行为。不过我认为它可能对某些人有用,所以我进入了这个问题。)

  • 正如你所看到的,计算机只是将操作系统一个接一个地按系统顺序排列,只有当它有可能获胜时才打破这个顺序来阻止X。这是一场非常防守的比赛,与3x3比赛不同。那么为什么3x3和4x4的方法表现不同呢? 代码如下: 下面是运行代码所需的其他组件和补充方法。我的类State2中使用的字段和构造函数: 补充方法: 返回板上空槽的数组(即可能的下一步移动)。 isGameOver2(),简单地检查棋盘的当前状态是

  • 在我看来,我的缓冲区包含关于最后一个数据包步骤(路由器->my home)的信息,这些信息解释了为什么TTL值是254以及为什么我用Traceroute找到了相同的两个IP: $>traceroute qwant.com traceroute to qwant.com(194.187.168.99),30跳最大,60字节数据包 172.17.0.1(172.17.0.1)0.026 ms 0.01