2016-05-16 5 views
0

Дней тому назад я получил эту «проблему». В моем индексе я запускал запрос match_phrase. Все было так, как ожидалось, до тех пор, пока я не выполнил тот же поиск с несколькими существительными слов (до того, как я использовал существительные одного слова, например: университет). Я сделал одну орфографию, и поиск не работал (не найден), если я удалил слово (скажем, тот, который был записан правильно), поисковая работа (найденная).Нечеткое поведение в запросе match_phrase

Здесь есть пример я сделал:

Настройки

PUT index1 
{ 
    "mappings": { 
    "myType": { 
     "properties": { 
     "field1": { 
      "type": "string", 
      "analyzer": "standard" 
     } 
     } 
    } 
    } 
} 

POST index1/myType/1 
{ 
    "field1": "Commercial Banks" 
} 

Случай 1: Одно существительное Поиск

GET index1/myType/_search 
{ 
    "query": { 
    "match": { 
     "field1": { 
     "type": "phrase", 
     "query": "comersial", 
     "fuzziness": "AUTO" 
     } 
    } 
    } 
} 

{ 
    "took": 16, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 1, 
    "max_score": 0.19178303, 
    "hits": [ 
     { 
     "_index": "index1", 
     "_type": "myType", 
     "_id": "1", 
     "_score": 0.19178303, 
     "_source": { 
      "field1": "Commercial Banks" 
     } 
     } 
    ] 
    } 
} 

Случай 2: Множественный поиск существительное

GET index1/myType/_search 
{ 
    "query": { 
    "match": { 
     "field1": { 
     "type": "phrase", 
     "query": "comersial banks", 
     "fuzziness": "AUTO" 
     } 
    } 
    } 
} 

{ 
    "took": 1, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 0, 
    "max_score": null, 
    "hits": [] 
    } 
} 

Итак, во втором случае, почему я не нахожу документ при выполнении запроса match_phrase? Есть что-то, чего я не хватает? Эти результаты просто сомневаются в том, что я знаю. Я использую нечеткий поиск неправильно? Я не уверен, что это проблема, или я тот, кто не понимает поведения.

Большое спасибо за то, что прочитал мой вопрос. Надеюсь, ты сможешь мне помочь.

ответ

2

Беспокойство не поддерживается в фразовых запросах.

В настоящее время ES молчит об этом, то есть позволяет указать параметр, но не предупреждает вас о том, что он не поддерживается. A pull request (#18322) (относящийся к issue #7764) существует, который исправит эту проблему. После объединения с ES 5 этот запрос будет ошибочным.

В breaking changes документа 5.0, мы можем видеть, что это не будет поддерживаться:

multi_match запрос не будет, если fuzziness используется для cross_fields, phrase или phrase_prefix типа. Этот параметр был недокументирован и молча игнорировался ранее для этих типов multi_match.

Смежные вопросы