- 最新
- 投票最多
- 评论最多
index 생성시에 mapping을 하지 않았다면 질문에 입력하신 대로 검색 한 경우, text 타입의 필드에서 검색할 것으로 예상됩니다. 이 경우 indexing 과정에서 analyzer를 거치게 되고 입력한 문자 또는 문장이 token화 되어서 저장됩니다. index 생성시에 analyzer를 지정하지 않았다면 기본값인 standard analyzer(Standard Tokenizer)가 지정되었으리라 생각됩니다.
standard analyzer에서는 기본적으로 공백 단위로 텀을 구분합니다. 결론적으로 기본값을 그대로 사용하실 예정이라면 데이터 입력시 공백으로 구분해주시고, 데이터 입력시 조작이 불가능한 상황이라면 index 생성시에 사용자 사전이나 상황에 맞도록 tokenizer 변경이 필요해보입니다. 참고로 한글로 된 전문 검색이 필요한 경우 OpenSearch에 기본적으로 포함된 seunjeon를 고려해보면 좋습니다.
GET _analyze
{
"tokenizer": "standard",
"text" : "스타벅스강남점"
}
결과
{
"tokens" : [
{
"token" : "스타벅스강남점",
"start_offset" : 0,
"end_offset" : 7,
"type" : "<HANGUL>",
"position" : 0
}
]
}
GET _analyze
{
"tokenizer": "standard",
"text" : "스타벅스 강남점"
}
결과
{
"tokens" : [
{
"token" : "스타벅스",
"start_offset" : 0,
"end_offset" : 4,
"type" : "<HANGUL>",
"position" : 0
},
{
"token" : "강남점",
"start_offset" : 5,
"end_offset" : 8,
"type" : "<HANGUL>",
"position" : 1
}
]
}
Opensearch의 Language analyzer가 지원하는 언어에 한글이 없던 기억입니다. unicode FTS 구현이 쉽지 않아서 적합한 솔루션을 잘 찾아보셔알지도 모르겠습니다.
Language analyzer OpenSearch supports the following language values with the analyzer option: arabic, armenian, basque, bengali, brazilian, bulgarian, catalan, czech, danish, dutch, english, estonian, finnish, french, galicia, german, greek, hindi, hungarian, indonesian, irish, italian, latvian, lithuanian, norwegian, persian, portuguese, romanian, russian, sorani, spanish, swedish, turkish, and thai.
https://opensearch.org/docs/2.1/opensearch/query-dsl/text-analyzers/
相关内容
- AWS 官方已更新 3 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 7 个月前
- AWS 官方已更新 2 年前