首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElasticSearch中的词匹配

ElasticSearch中的词匹配
EN

Stack Overflow用户
提问于 2016-04-28 03:41:55
回答 1查看 72关注 0票数 0

我就是这样映射我的索引的。

代码语言:javascript
复制
 settings = new ConnectionSettings(pool)
              .DefaultIndex(defaultIndex)
              .MapDefaultTypeNames(m => m.Add(typeof(MyClass), "content"))
              .PrettyJson()
              .DisableDirectStreaming());

假设我有一个文档被索引到ES中

内容:“蒂姆·库克在财报电话会议上透露,iPhone在印度的销售额同比增长56%,尽管该公司13年来首次在全球销售下滑。”

现在,如果用户使用匹配查询搜索单词

代码语言:javascript
复制
{
  "query": {
    "match": {
      "answer": {
        "query": "decline"
      }
    }
}}

假设我得了0.047分。

但是使用相同的查询,如果我搜索单词"declining",则会得到0的分数。我想检查这个词是否部分存在于文档中。我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-28 04:00:43

您需要通过声明特定的分析器来分析内容字段来定义字段映射。在这种情况下,我们可以使用 language analyzer,它将根据英语语法和词汇规则停止标记。

代码语言:javascript
复制
PUT your_index
{
  "mappings": {
    "your_type": {
      "properties": {
        "content": {
          "type": "string",
          "analyzer": "english"
        }
      }
    }
  }
}

然后你可以索引你的内容。

代码语言:javascript
复制
PUT /your_index/your_type/1
{
  "content": "Tim Cook revealed during the earnings call that iPhone sales in India grew by 56% on a yearly basis, despite the company's first global sales decline in 13 years."
}

最后,您可以搜索declinedeclining并获得相同的分数。

代码语言:javascript
复制
POST /your_index/_search 
{
  "query": {
    "match": {
      "content": {
        "query": "decline"
      }
    }
  }
}

POST /your_index/_search 
{
  "query": {
    "match": {
      "content": {
        "query": "declining"
      }
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36904843

复制
相关文章

相似问题

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