2017-01-30 1 views
0

Я хочу реализовать синонимы в моем сопоставлении. Я создал сопоставление родитель-ребенок. Вот мое отображение.Как я могу реализовать синонимы в упругом поиске?

{ 
    "mapping":{ 
     "mappings":{ 
     "question_data":{ 
      "properties":{ 
       "question_id":{ 
        "type":"integer" 
       }, 
       "question":{ 
        "type":"string" 
       } 
      } 
     }, 
     "answer_data":{ 
      "_parent":{ 
       "type":"question_data" 
      }, 
      "_routing":{ 
       "required":true 
      }, 
      "properties":{ 
       "answer_id":{ 
        "type":"integer" 
       }, 
       "answer":{ 
        "type":"string", 

       } 
      } 
     } 
     } 
    } 
} 

Заранее спасибо.

+0

вы можете также поделиться своими отображениями – user3775217

+0

wherte вы хотите иметь синонимы? – Mysterion

ответ

2

Чтобы использовать синонимы в elasticsearch, вы должны сначала создать анализатор синонима в настройках, чтобы добавить поддержку синонима для определенного поля. Также в настройках вы также можете определить синонимы.

PUT testindex_510 
{ 
    "settings": { 
     "analysis": { 
      "analyzer": { 
       "synonymanalyzer": { 
        "tokenizer": "standard", 
        "filter": ["lowercase", "locationsynfilter"] 
       }, 
       "synonymanalyzer1": { 
        "tokenizer": "standard", 
        "filter": ["lowercase", "titlesynfilter"] 
       } 
      }, 
      "filter": { 
       "locationsynfilter": { 
        "type": "synonym", 
        "synonyms": [ 
         "lokhandwala,andheri west", 
         "versova,andheri west", 
         "mazgaon,byculla" 
        ] 
       }, 
       "titlesynfilter": { 
        "type": "synonym", 
        "synonyms": [ 
         "golds , gold", 
         "talwalkars, talwalkar" 
        ] 
       } 
      } 

     } 

    }, 
    "mappings": { 
     "testtype": { 
      "properties": { 
       "title": { 
        "type": "string", 
        "analyzer": "synonymanalyzer1" 
       }, 
       "location": { 
        "type": "string", 
        "analyzer": "synonymanalyzer" 
       } 
      } 
     } 
    } 
} 

В приведенных выше настройках я определил два анализатора для двух разных полей. Эти анализаторы поддерживают синонимы, а также определяют синонимы в фильтре для каждого анализатора.

Вы также определяете синонимы в отдельном txt-файле вместо определения в сопоставлениях, подобных следующему.

{ 
    "settings": { 
     "analysis": { 
      "analyzer": { 
       "synonymanalyzer": { 
        "tokenizer": "standard", 
        "filter": ["lowercase", "locationsynfilter"] 
       }, 
       "synonymanalyzer1": { 
        "tokenizer": "standard", 
        "filter": ["lowercase", "titlesynfilter"] 
       } 
      }, 
      "filter": { 
       "titlesynfilter": { 
        "type": "synonym", 
        "synonyms_path": "analysis/titlesynonym.txt" 
       }, 
       "locationsynfilter": { 
        "type": "synonym", 
        "synonyms_path": "analysis/locationsynonym.txt" 
       } 
      } 

     } 

    }, 
    "mappings": { 
     "testtype": { 
      "properties": { 
       "title": { 
        "type": "string", 
        "analyzer": "synonymanalyzer1" 
       }, 
       "location": { 
        "type": "string", 
        "analyzer": "synonymanalyzer" 
       } 
      } 
     } 
    } 
} 

где должен быть ваш txt-файл. Для более подробной информации обратитесь к documentation.

ipod, i-pod, i pod 
foozball , foosball 
universe , cosmos 

Надеется, что это помогает

+0

Спасибо! Это мне очень помогает. –

+0

Он работает как ожидается ..... –

+0

Спасибо, не могли бы вы принять ответ. – user3775217

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

  • Нет связанных вопросов^_^