2015-12-11 1 views
0

Я смущен. Я следующий документ индексируется:Многополюсный анализатор не работает должным образом

POST test/topic 
    { 
     "title": "antiemetics" 
    } 

С помощью следующего запроса:

{ 
     "query": { 
         "query_string" : { 
          "fields" : ["title*"], 
          "default_operator": "AND", 
          "query" :"anti emetics", 
          "use_dis_max" : true 
         } 
        }, 
        "highlight" : { 
         "fields" : { 
          "*" : { 
           "fragment_size" : 200, 
           "pre_tags" : ["<mark>"], 
           "post_tags" : ["</mark>"] 
          } 
         } 
        } 
    } 

и следующие настройки и отображения:

 POST test{ 
      "settings":{ 
       "index":{ 
       "number_of_shards":1, 
       "analysis":{ 
        "analyzer":{ 
         "merge":{ 
          "type":"custom", 
          "tokenizer":"keyword", 
          "filter":[ 
          "lowercase" 
          ], 
          "char_filter":[ 
          "hyphen", 
          "space", 
          "html_strip" 
          ] 
         } 
        }, 
        "char_filter":{ 
         "hyphen":{ 
          "type":"pattern_replace", 
          "pattern":"[-]", 
          "replacement":"" 
         }, 
         "space":{ 
          "type":"pattern_replace", 
          "pattern":" ", 
          "replacement":"" 
         } 
        } 
       } 
       } 
      }, 
      "mappings":{ 
       "topic":{ 
       "properties":{ 
        "title":{ 
         "analyzer":"standard", 
         "search_analyzer":"standard", 
         "type":"string", 
         "fields":{ 
          "specialised":{ 
          "type":"string", 
          "index":"analyzed", 
          "analyzer":"standard", 
          "search_analyzer":"merge" 
          } 
         } 
        } 
       } 
       } 
      } 
     } 

Я знаю, что мое использование многопрофильных Безразлично через «Имею смысл, поскольку я использую тот же анализатор индекса, что и название, поэтому, пожалуйста, просто игнорируйте это, но меня больше интересует мое понимание в отношении анализаторов. Я ожидал, что анализатор слияния изменит следующий запрос «anti emetics» на «antiemetics», и я надеялся, что параметр multifield, который применяет анализатор, будет соответствовать маркерной «противорвотной», но я не получаю никаких результатов, даже если Я проверил, что анализатор удаляет пробелы из запроса, запустив API анализа. Любая идея почему?

+0

Какую версию ES вы используете? – ChintanShah25

ответ

0

Это похоже на работу с вашей установкой:

POST /test_index/_search 
{ 
    "query": { 
     "match": { 
     "title.specialised": "anti emetics" 
     } 
    } 
} 

Вот код, я создал, чтобы играть с ним:

http://sense.qbox.io/gist/3ef6926644213cf7db568557a801fec6cb15eaf9

+0

большое спасибо, я надеялся использовать параметр query_string, но похоже, что из-за того, как он работает, с ним нельзя использовать search_analyzer. –

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