我对Elasticsearch完成有时具有的行为感到有些惊讶。我已经建立了一个带有建议字段的映射。在建议字段的输入中,我输入了三个元素,分别是一个证券的名称,isin和发行者。
这是我使用的映射:
function stopStream() {
if (!window.streamReference) return;
window.streamReference.getAudioTracks().forEach(function(track) {
track.stop();
});
window.streamReference.getVideoTracks().forEach(function(track) {
track.stop();
});
window.streamReference = null;
}
当我要使用此查询查询索引时:
"suggest": {
"type" : "completion",
"analyzer" : "simple"
}
我会得到一个结果列表,但不一定要带我的确切前缀,而在大多数情况下,其精确匹配不在顶部。
所以我想知道是否有一种方法可以增强建议中的完全匹配项,并在可能的情况下使此类完全匹配项位于第一位。
答案 0 :(得分:0)
我认为我的问题是通过使用自定义分析器解决的:简单的分析器对于我输入的内容并不方便。
"settings": {
"analysis": {
"char_filter": {
"punctuation": {
"type": "mapping",
"mappings": [".=>"]
}
},
"filter": {},
"analyzer": {
"analyzer_text": {
"tokenizer": "standard",
"char_filter": ["punctuation"],
"filter": ["lowercase", "asciifolding"]
}
}
}
},
和
"suggest": {
"type" : "completion",
"analyzer" : "analyzer_text"
}