我正在使用terms facet获取弹性搜索服务器中的顶级terms
。现在,我的代码"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(在我的例子中,它的'article')并且它有效:)
答案 0 :(得分:1)
如果符合您的要求,请填写not_analysed
should work。
curl -XPUT localhost:9200/INDEX -d '{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 2
},
"mappings": {
"my_type": {
"_all": {
"enabled": false
},
"_source": {
"compressed": true
},
"properties": {
"tag": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}'