首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Elasticsearch。如何阻止以es结尾的复数?

Elasticsearch。如何阻止以es结尾的复数?
EN

Stack Overflow用户
提问于 2021-01-13 18:24:25
回答 1查看 238关注 0票数 1

对于EN语言,我有一个使用porter_stem的自定义分析器。我希望查询与“病毒”和“病毒”两个词返回相同的结果。

我所发现的是波特干病毒>病毒和病毒>病毒。因此,我得到了不同的结果。

我该怎么处理呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-14 13:08:15

您可以实现您的用例,即使用"virus“和”virus“两个单词的查询应该返回相同的结果--通过使用雪球令牌滤波器,将所有单词都引伸到它们的词根。

使用索引数据、映射、搜索查询和搜索结果添加工作示例

索引映射:

代码语言:javascript
运行
复制
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "my_snow"
          ]
        }
      },
      "filter": {
        "my_snow": {
          "type": "snowball",
          "language": "English"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "desc": {
        "type": "text",
        "analyzer": "my_analyzer"
      }
    }
  }
}

分析API

代码语言:javascript
运行
复制
GET /_analyze

{
  "analyzer" : "my_analyzer",
  "text" : "viruses"
}

生成以下令牌-

代码语言:javascript
运行
复制
{
  "tokens": [
    {
      "token": "virus",
      "start_offset": 0,
      "end_offset": 7,
      "type": "<ALPHANUM>",
      "position": 0
    }
  ]
}

索引数据:

代码语言:javascript
运行
复制
{
    "desc":"viruses"
}
{
    "desc":"virus"
}

搜索查询:

代码语言:javascript
运行
复制
{
  "query": {
    "match": {
      "desc": {
        "query": "viruses"
      }
    }
  }
}

搜索结果:

代码语言:javascript
运行
复制
"hits": [
      {
        "_index": "65707743",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.18232156,
        "_source": {
          "desc": "viruses"
        }
      },
      {
        "_index": "65707743",
        "_type": "_doc",
        "_id": "2",
        "_score": 0.18232156,
        "_source": {
          "desc": "virus"
        }
      }
    ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65707743

复制
相关文章

相似问题

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