2014-02-10 4 views
1

Я пытаюсь создать поиск синонимов по языкам, индексированным в ES.Поиск синонимов в elasticsearch

Например,

индексированных документ -> Название: Немецкий

Синонимы: немецкий, Deutsch, XYZ

То, что я хочу сделать, когда я печатаю на немецком или Deutsch или XYZ, что ES возвращает мне немецкий ...

Возможно ли это вообще?

+0

Да, конечно http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html – phoet

ответ

0

Да, очень. ElasticSearch отлично справляется с синонимами. Вот пример того, как я настроил синонимы на моем кластере -

curl -XPOST localhost:9200/**new-index** -d '{ 
"settings": { 
"number_of_shards": 2, 
"number_of_replicas": 0, 
"analysis": { 
    "filter": { 
    "synonym": { 
     "type": "synonym", 
     "synonyms_path": "synonyms/synonyms.txt" 
    } 
    }, 
    "analyzer": { 
    "synonym": { 
     "tokenizer": "lowercase", 
     "filter": [ 
     "synonym" 
     ] 
    } 
    } 
} 
}, 
"mappings": { 
"**new-type**": { 
    "_all": { 
    "enabled": false 
    }, 
    "properties": { 
    "Title": { 
     "type": "multi_field", 
     "store": "yes", 
     "fields": { 
     "Title": { 
      "type": "string", 
      "analyzer": "synonym" 
     } 
     } 
     } 
    } 
    } 
} 
}' 

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

Deutsch, XYZ

ПОМНИТЕ - если у вас есть строчной фильтр по времени индексных синонимам должны быть в нижний регистр. Перезагрузите узлы, если они не работают.

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