커리큘럼
home
React
home

Elastic Search (1)

문제 1: 검색 결과의 정확도와 성능 최적화

문제 설명

Elastic Search를 사용하여 검색을 수행할 때, 검색 결과가 예상보다 많은 결과를 반환하거나, 반대로 원하는 결과가 충분히 반영되지 않는 문제가 발생했습니다. 특히, fuzziness, minimum_should_match와 같은 파라미터들이 제대로 튜닝되지 않았을 때 이러한 문제가 두드러졌습니다.

해결 과정

1.
Minimum Should Match 조정:
검색 결과의 유연성을 높이기 위해 minimum_should_match 값을 조정했습니다. 이를 통해 조금 더 넓은 범위의 검색 결과를 얻을 수 있었습니다.
2.
Fuzziness 튜닝:
fuzziness 값을 2로 설정하여, 사용자가 오타를 입력하거나 철자가 약간 다른 경우에도 유연하게 검색 결과를 제공할 수 있도록 했습니다. 그러나 fuzziness를 너무 높게 설정하면 너무 많은 결과가 반환되는 문제가 발생할 수 있어, 적절한 값을 찾기 위해 반복적인 테스트를 진행했습니다.
3.
필드 가중치 조정:
검색의 우선순위를 개선하기 위해 title, teacher, description 필드에 가중치를 부여했습니다. 초기에는 title 필드에 높은 가중치(^3)를 주고, description 필드에는 상대적으로 낮은 가중치(^1)를 설정했습니다. 그러나 실제 검색 결과를 분석한 결과, description 필드가 검색에서 더 중요한 역할을 해야 한다는 것을 발견했고, 가중치를 ^2로 조정하여 더 정확한 검색 결과를 도출할 수 있었습니다.

문제 2: 검색어 오타 처리 및 유사어 검색

문제 설명

사용자가 검색어를 입력할 때 오타가 발생하거나 유사한 단어를 사용할 경우, 검색 결과가 제대로 나오지 않는 문제가 있었습니다. 예를 들어, "은퇴"를 "은타"로 잘못 입력했을 때 검색 결과가 전혀 반환되지 않는 상황이 발생했습니다.

해결 과정

1.
Fuzziness 설정:
오타가 포함된 검색어에 대해 유사한 결과를 반환할 수 있도록 fuzziness를 2로 설정했습니다. 이 설정을 통해 사용자 입력의 작은 오류에도 불구하고 원하는 결과를 얻을 수 있었습니다.
2.
Prefix Length 제한:
fuzziness를 높게 설정하면 너무 많은 오타를 허용하게 되어 검색 결과의 정확도가 떨어질 수 있습니다. 이를 보완하기 위해 prefix_length를 1로 설정하여, 검색어의 처음 몇 글자가 정확히 일치해야만 결과가 반환되도록 제한을 두었습니다. 이를 통해 검색 정확도를 유지하면서도 유연한 검색 결과를 제공할 수 있었습니다.