Elasticsearch NEST 5.x Koelnerphonetic不匹配

时间:2017-03-16 14:15:01

标签: c# elasticsearch nest

更新 我改变了问题的方法

我尝试使用koelner语音进行语音搜索,并且还使用了ngram。

索引配置我使用:

    {
  "testnew": {
    "settings": {
      "index": {
        "number_of_shards": "5",
        "provided_name": "testnew",
        "creation_date": "1489672932033",
        "analysis": {
          "filter": {
            "koelnerPhonetik": {
              "replace": "false",
              "type": "phonetic",
              "encoder": "koelnerphonetik"
            }
          },
          "analyzer": {
            "koelnerPhonetik": {
              "type": "custom",
              "tokenizer": "koelnerPhonetik"
            },
            "ngram_analyzer": {
              "type": "custom",
              "tokenizer": "ngram_tokenizer"
            }
          },
          "tokenizer": {
            "koelnerPhonetik": {
              "type": "standard"
            },
            "ngram_tokenizer": {
              "token_chars": [
                "letter",
                "digit",
                "punctuation",
                "symbol"
              ],
              "min_gram": "2",
              "type": "ngram",
              "max_gram": "20"
            }
          }
        },
          ...
        }
      }
    }
  }
}

我有一个看起来像这样的文件:

{
    "_index": "testnew",
    "_type": "person",
    "_id": "3",
    "_score": 1,
    "_source": {
      "name": "Can",
      "fields": {
        "phonetic": {
          "type": "string",
          "analyzer": "koelnerPhonetik"
        }
      }
    }

它映射如下:

GET testnew/person/_mapping
          "name": {
            "type": "text",
            "analyzer": "koelnerPhonetik"
          }

为什么我找不到' Can'通过搜索' Kan'在这个查询?

GET testnew/person/_search
      {
      "query": {
        "match": {
          "name.phonetic": {
            "query": "Kan"
          }
        }
      }
    }

0 个答案:

没有答案