edge-ngram 기술을 사용하여 자동 완성을 만들고 싶다고 가정 해 봅니다 (완료 방법은 나에게 좋은 옵션이 아닙니다). 나는 "우리", "우리", "우리", "우리", "우리 팔", "우리 군대"에 의해 "우리 군대"의 색인을 달기를 원합니다.토큰 화되지 않은 필드에서 동의어 토큰 필터 사용
문제는 - 동의어 목록도 있습니다. 예를 들어 "us"는 "usa"의 동의어입니다. 어떻게하면 "우리 군대"를 "우리"와 "군대"로 나누고, 동의어를 찾아 다시 돌려 놓을 수 있습니까?
{
"analysis": {
"filter": {
"ngram_prefix": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
},
"custom_synonyms": {
"type": "synonym",
"tokenizer": "standard",
"synonyms_path": "/my/synonym/path/synonyms.txt",
"ignore_case": True
}
},
"analyzer": {
"synonym_ngram": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"custom_synonyms",
"lowercase",
"ngram_prefix",
],
"char_filter": [],
}
}
}
}
운이 없으면 :
나는이 같은 일을 시도했다.토큰을 연결하는 방법이 있습니까? 그렇게하면 항목을 토큰으로 분할하고 동의어를 찾고 토큰을 다시 연결시킬 수 있습니까?
아마도 match_phrase를 사용하여 첫 번째 토큰이 위치 0인지 확인해야할까요?