Я использую термины чтобы получить топ terms
на сервере elasticsearch. Теперь мои теги "indian-government"
не рассматриваются как один тег. Он рассматривается как "indian"
"government"
. Итак, самый используемый тег — "indian"
. Как это исправить? Должен ли я изменить токенизацию?
'settings': {
'analysis': {
'analyzer': {
'my_ngram_analyzer' : {
'tokenizer' : 'my_ngram_tokenizer',
'filter': ['my_synonym_filter']
}
},
'filter': {
'my_synonym_filter': {
'type': 'synonym',
'format': 'wordnet',
'synonyms_path': 'analysis/wn_s.pl'
}
},
'tokenizer' : {
'my_ngram_tokenizer' : {
'type' : 'nGram',
'min_gram' : '1',
'max_gram' : '50'
}
}
}
}
Изменить: на основе комментариев индексация выглядит следующим образом. Однако результаты не меняются:
es.indices.create(
index="article-index",
body={
'settings': {
'analysis': {
'analyzer': {
'my_ngram_analyzer' : {
'tokenizer' : 'my_ngram_tokenizer',
'filter': ['my_synonym_filter']
}
},
'filter': {
'my_synonym_filter': {
'type': 'synonym',
'format': 'wordnet',
'synonyms_path': 'analysis/wn_s.pl'
}
},
'tokenizer' : {
'my_ngram_tokenizer' : {
'type' : 'nGram',
'min_gram' : '1',
'max_gram' : '50'
}
}
}
},
'mappings': {
'my_mapping_type': {
'_all': {
'enabled': False
},
'_source': {
'compressed': True
},
'properties': {
"tags": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
},
# ignore already existing index
ignore=400
)
РЕДАКТИРОВАТЬ: Решено. my_mapping_type нужно заменить на doc_type (в моем случае это «статья»), и это работает :)
not_analyzed
- person Konstantin V. Salikhov   schedule 17.05.2014