首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将一个大单词标记成单词的组合

将一个大单词标记成单词的组合
EN

Stack Overflow用户
提问于 2017-05-04 11:38:50
回答 2查看 251关注 0票数 1

假设我有超级碗,是elasticsearch中文档属性的值。查询超级碗如何匹配超级碗

我读过关于字母标记符和单词分隔符的文章,但两者似乎都解决不了我的问题。基本上,我希望能够将一个大单词的组合转换成有意义的词组合。

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-word-delimiter-tokenfilter.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-letter-tokenizer.html

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-24 14:42:10

我知道这已经很晚了,但是你可以使用同义词过滤器 --你可以定义超级碗和"s bowl","SuperBowl“等等。

票数 1
EN

Stack Overflow用户

发布于 2017-05-05 07:56:51

有一些方法可以做到这一点,而不改变您的实际索引。例如,如果您使用的是至少5.2 (其中引入了normalizers ),但它也可以是早期版本,但5.x使其更容易,您可以定义一个规范化器来降低文本的大小写,而不是更改它,然后在搜索时使用fuzzy查询来说明superbowl之间的空间。不过,我的解决方案是您给出的这个示例的具体解决方案。与大多数情况下的Elasticsearch一样,人们需要考虑进入Elasticsearch的数据类型以及搜索时所需的数据。

无论如何,如果您对以下方法感兴趣:

代码语言:javascript
复制
DELETE test
PUT /test
{
  "settings": {
    "analysis": {
      "normalizer": {
        "my_normalizer": {
          "type": "custom",
          "char_filter": [],
          "filter": ["lowercase", "asciifolding"]
        }
      }
    }
  },
  "mappings": {
    "test": {
      "properties": {
        "title": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "normalizer": "my_normalizer"
            }
          }
        }
      }
    }
  }
}
POST test/test/1
{"title":"Super Bowl"}

GET /test/_search
{
  "query": {
    "fuzzy": {
      "title.keyword": "superbowl"
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43781866

复制
相关文章

相似问题

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