Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 带词干的弹性搜索匹配_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Stem - Fatal编程技术网 elasticsearch,stem,Search,elasticsearch,Stem" /> elasticsearch,stem,Search,elasticsearch,Stem" />

Search 带词干的弹性搜索匹配

Search 带词干的弹性搜索匹配,search,elasticsearch,stem,Search,elasticsearch,Stem,如何搜索词干匹配 也就是说,目前我有许多文档在项目标题字段中包含“skateboard”一词,但只有3个文档包含“skateboards”一词。因此,当我执行以下搜索时: POST /my_index/my_type/_search { "size": 100, "query" : { "multi_match": { "query": "skateboards", "fields": [ "item_title^3"

如何搜索词干匹配

也就是说,目前我有许多文档在
项目标题
字段中包含“skateboard”一词,但只有3个文档包含“skateboards”一词。因此,当我执行以下搜索时:

POST /my_index/my_type/_search
{
    "size": 100,
    "query" : {
        "multi_match": {
           "query": "skateboards",
           "fields": [ "item_title^3" ]
        }
    }
}
我只得到3个结果。但是,我也希望返回带有“skateboard”字样的文件

从Elasticsearch的理解来看,我希望这是通过在
item_title
字段上指定一个映射来实现的,该字段包含一个分析器,该分析器对每个单词的词干版本进行索引,但我似乎找不到关于如何实现这一点的文档,这表明它是以不同的方式完成的

建议?

这里有一个例子:

PUT /stem
{
  "settings": {
    "analysis": {
      "filter": {
        "filter_stemmer": {
          "type": "stemmer",
          "language": "english"
        }
      },
      "analyzer": {
        "tags_analyzer": {
          "type": "custom",
          "filter": [
            "standard",
            "lowercase",
            "filter_stemmer"
          ],
          "tokenizer": "standard"
        }
      }
    }
  },
  "mappings": {
    "test": {
      "properties": {
        "item_title": {
          "analyzer": "tags_analyzer",
          "type": "text"
        }
      }
    }
  }
}
索引一些示例文档:

POST /stem/test/1
{
  "item_title": "skateboards"
}
POST /stem/test/2
{
  "item_title": "skateboard"
}
POST /stem/test/3
{
  "item_title": "skate"
}
执行查询:

GET /stem/test/_search
{
  "query": {
    "multi_match": {
      "query": "skateboards",
      "fields": [
        "item_title^3"
      ]
    }
  },
  "fielddata_fields": [
    "item_title"
  ]
}
并看到结果:

  "hits": [
     {
        "_index": "stem",
        "_type": "test",
        "_id": "1",
        "_score": 1,
        "_source": {
           "item_title": "skateboards"
        },
        "fields": {
           "item_title": [
              "skateboard"
           ]
        }
     },
     {
        "_index": "stem",
        "_type": "test",
        "_id": "2",
        "_score": 1,
        "_source": {
           "item_title": "skateboard"
        },
        "fields": {
           "item_title": [
              "skateboard"
           ]
        }
     }
  ]

我还添加了
fielddata\u fields
元素,以便您可以查看字段内容的索引方式。正如您所看到的,在这两种情况下,索引项都是
skateboard

,如果您使用的是较新版本的Elasticsearch()