2017-06-13 88 views
0

我用下面的映射: 我已经修改英语分析器使用的ngram分析器如下,使我应该能够以下情形下,以搜寻: 1]部分搜索和特殊字符搜索 2]向得到好处的语言分析仪Elasticsearch返回意外的结果

{ 
    "settings": { 
     "analysis": { 
      "analyzer": { 
       "english_ngram": { 
        "type": "custom", 
        "filter": [ 
         "english_possessive_stemmer", 
         "lowercase", 
         "english_stop", 
         "english_stemmer", 
         "ngram_filter" 
        ], 
        "tokenizer": "whitespace" 
       } 
      }, 
      "filter": { 
       "english_stop": { 
        "type": "stop" 
       }, 
       "english_stemmer": { 
        "type": "stemmer", 
        "language": "english" 
       }, 
       "english_possessive_stemmer": { 
        "type": "stemmer", 
        "language": "possessive_english" 
       }, 
       "ngram_filter": { 
        "type": "edge_ngram", 
        "min_gram": 1, 
        "max_gram": 25 
       } 
      } 
     } 
    }, 
    "mappings": { 
    "movie": { 
     "properties": { 
     "title": { 
      "type": "string", 
      "fields": { 
      "en": { 
       "type":  "string", 
       "analyzer": "english_ngram" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

收录我的数据如下:

PUT http://localhost:9200/movies/movie/1 
    { 
     "title" : "[email protected] movie" 
    } 

查询,如下所示:

{ 
    "query": { 
     "multi_match": { 
      "query": "$peci#44 m11ov", 
      "fields": ["title.en"], 
      "operator":"and", 
      "type":  "most_fields", 
      "minimum_should_match": "75%" 
     } 
    } 
} 

在查询中,我正在寻找“$ peci#44 m11ov”字符串,理想情况下我不应该得到这个结果。 这里有什么问题吗?

回答