是否可以在ElasticSearch> 2.0搜索中返回分析的字段?

时间:2016-03-16 11:37:25

标签: elasticsearch lucene nlp

这个问题与此处发布的旧问题非常相似:Retrieve analyzed tokens from ElasticSearch documents,但要查看是否有任何更改,我认为再次发布最新版本的ElasticSearch更有意义。

我们正在尝试使用搜索查询字段映射在ElasticSearch中使用内置于ElasticSearch中的雪球搜索器搜索ElasticSearch中的文本正文。性能和结果都很棒,但是因为我们需要使用词干文本体进行后期分析,所以我们希望搜索结果返回搜索结果中每个文档的文本字段的实际词干标记。

该字段的映射目前如下所示:

      "TitleEnglish": {
        "type": "string",
        "analyzer": "standard",
        "fields": {
          "english": {
            "type": "string",
            "analyzer": "english"
          },
          "stemming": {
            "type": "string",
            "analyzer": "snowball"
          }
        }
      }

,搜索查询专门针对 TitleEnglish.stemming 执行。理想情况下,我希望它返回该字段,但返回时不会返回分析字段,而是返回原始字段。

有人知道有什么办法吗?我们已经查看了Term Vectors,但它们似乎只能返回单个文档或一组文档,而不是搜索结果?

或者像Solr或Sphinx这样的其他解决方案是否提供此选项?

添加一些额外信息。如果我们运行以下查询:

GET /_analyze?analyzer=snowball&text=Eight issue of Industrial Lorestan eliminate barriers to facilitate the Committees review of

它返回词干:eightissuindustri等。这正是我们希望为文本中所有单词的每个匹配文档返回的结果(所以不仅仅是比赛)。

1 个答案:

答案 0 :(得分:4)

除非我遗漏了明显的内容,为什么不在TitleEnglish.stemming字段上返回terms aggregation

{
    "query": {...},
    "aggs" : {
        "stems" : {
            "terms" : { 
                "field" : "TitleEnglish.stemming",
                "size": 50
            }
        }
    }
}

将该汇总添加到您的查询中,您可以从匹配查询的文档中获取TitleEnglish.stemming子字段中所有词干术语的明细。