elasticsearch - ElasticSearch忽略只有一个字母的单词

标签 elasticsearch

我是ElasticSearch的初学者,我有一个使用ElasticSearch在给定食物或水果中寻找成分的应用程序...
如果用户使用例如磁带,我将面临评分问题:"Vitamine d"ElasticSearch会给出得分最高的"vitamine"短语,即使该短语"Vitamine D"存在且通常应具有最高分数。
我看到如果我的情况下的第二个单词"d"只是一个字母,那么 flex 搜索将忽略它。

我做了另一个例子:"vitamine b12",我得到了正确的分数。

这是应用程序发送到服务器的查询:

{
  "from": 0,
  "size": 5,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "constNomFr": {
              "query": "vitamine d"
            }
          }
        }
      ],
      "should": [
        {
          "prefix": {
            "constNomFr": {
              "value": "vitamine d",
              "boost": 2
            }
          }
        }
      ]
    }
  },
  "_source": {
    "excludes": [
      "alimentDtos"
    ]
  }
}

我可以对其进行哪些修改以使其起作用?

非常感谢。

最佳答案

如果可以识别成分,建议您在单独的字段“成分”中为它们建立索引,并将其类型设置为keyword。这样,您可以使用术语过滤器,甚至可以运行聚合。

您可能已经用这种方式对文档建立了索引,在这种情况下,如果您使用的是默认映射,则只需对your_field_name.keyword运行查询。

如果没有将成分索引为数组,则应查看elasticsearch analyzers以选择或构建正确的成分。

关于elasticsearch - ElasticSearch忽略只有一个字母的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50644537/

相关文章:

elasticsearch - 通过 Clojure 和 elastich 在 elasticsearch 中进行嵌套聚合

elasticsearch - state_replicaset/state_replicaset.go98发出http请求时出错:获取kube-state-metrics:8080/metrics:在IP:53上查找kube-state-metrics没有此类主机

elasticsearch - 通过查询更新:如果一项或多项不匹配,则包含多个语句的内联脚本ctx失败?

java - spring boot 和 elastic search 不支持版本最小兼容版本

elasticsearch - Elasticsearch:如何更新索引脚本(搜索模板)

search - Elasticsearch 中的索引和搜索分析器:将准确的字符串作为第一个结果时遇到麻烦

elasticsearch - 使用 Elasticsearch 聚合结果作为过滤器

amazon-ec2 - 如何在 AWS 实例上公开 ElasticSearch?

ruby-on-rails-4 - Rails 4中的 Elasticsearch 查询字符串

每个用户的 ElasticSearch 单独索引