Elasticsearch前缀建议?

时间:2018-06-18 15:17:32

标签: elasticsearch search-suggestion

如何通过前缀获得学期建议,我有名称字段。

我有三条记录:

坐在这个地方的中间

完成最低工作

运河mib消失了

我希望能够在输入 min 时将最小这个词作为建议用语,但我确实 mid mib ,在其他文件中。

这是我的疑问:

{
  "suggest": {
    "text": "min",
    "simple_phrase": {
      "term": {
        "analyzer": "standard",
        "field": "Name.raw",
        "min_word_length": 2,
        "prefix_length": 1,
        "suggest_mode": "always"
      }
    }
  }
}

MAPPING

{
  "Name": {
    "type": "text",
    "index": "not_analyzed",
    "include_in_all": true,
    "fields": {
      "raw": {
        "type": "text",
        "index": "not_analyzed",
        "include_in_all": false
      },
      "trigram": {
        "type": "text",
        "analyzer": "trigram_analyzer"
      }
    }
  }
}

RESULT

{
  "took": 6,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 0,
    "max_score": 0,
    "hits": []
  },
  "suggest": {
    "simple_phrase": [
      {
        "text": "min",
        "offset": 0,
        "length": 3,
        "options": [
          {
            "text": "mib",
            "score": 0.6666666,
            "freq": 79
          },
          {
            "text": "mid",
            "score": 0.6666666,
            "freq": 59
          }
        ]
      }
    ]
  }
}

1 个答案:

答案 0 :(得分:0)

正如文档中所述:

  

术语建议者根据编辑距离建议术语。在建议术语之前分析提供的建议文本。建议的术语是根据分析的建议文本标记提供的。术语建议者不会将查询视为请求的一部分。

因此,术语建议或者编辑"你的文字。所以你可以尝试这样的事情,看看minimum作为建议的结果:

{
  "suggest": {
    "text" : "minimam",
    "simple_phrase" : {
      "term" : {
        "analyzer" : "standard",
        "field" :  "Name.raw",
        "min_word_length" : 1,
        "suggest_mode" : "always"
      }
    }
  }
}

我认为,为了您的目的,最好使用completion suggester