Elasticsearch短语建议词前缀语音差异

时间:2017-05-23 09:33:15

标签: elasticsearch kibana search-suggestion

我想知道短语建议者是否有任何方法可以纠正拼音错误的前缀拼写错误。

Elasticsearch 5.1.2

在Kibana 5.1.2中进行测试

例如:

而不是"马戏团"有人写了" sircus",或者代替"编码"有人写了#34; koding"。 有趣的是,而不是"短语"你可以写" frase"并得到一个建议。

这是我的设置。

设定:

PUT text_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "suggests_analyzer": {
          "tokenizer": "standard",
          "filter": [
           "lowercase",
           "asciifolding",
           "shingle_filter"
          ],
          "type": "custom"
        },
        "reverse": {
            "type": "custom",
            "tokenizer": "standard",
            "filter": ["standard", "reverse"]
          }
      },
      "filter": {
        "shingle_filter": {
          "min_shingle_size": 2,
          "max_shingle_size": 5,
          "type": "shingle"
        }
      }
    }
  },
  "mappings": {
    "testtype": {
      "properties": {
        "suggest_field": {
          "type": "text",
          "analyzer": "suggests_analyzer",
          "fields": {
            "reverse": {
              "type": "text",
              "analyzer": "reverse"
            }
          }
        }
      }
    }
  }
}

一些文件:

POST test_index/test_type/_bulk
{"index":{}}
{ "suggest_field": "phrase"}
{"index":{}}
{ "suggest_field": "Circus"}
{"index":{}}
{ "suggest_field": "Coding"}

查询:

POST /so-index/_search
{
  "suggest" : {
    "text" : "sircus",
    "simple_phrase" : {
      "phrase" : {
        "field" :  "suggest_field",
        "max_errors": 0.9,
        "highlight": {
          "pre_tag": "<em>",
          "post_tag": "</em>"
        },
        "direct_generator" : [ {
          "field" : "suggest_field",
          "suggest_mode" : "always"
        }, {
          "field" : "suggest_field.reverse",
          "suggest_mode" : "always",
          "pre_filter" : "reverse",
          "post_filter" : "reverse"
        }]
      }
    }
  }
}

此外,我重复了几次(5到10之间)的步骤而没有改变任何内容:

  • 删除索引
  • 放入索引,设置&amp;映射
  • 添加文件
  • query(codign)

有时我会得到建议,有时候我也不会。有没有解释呢?

1 个答案:

答案 0 :(得分:0)

尝试在direct_generator中设置&#34; prefix_length&#34;:0。