'Wand'에 해당되는 글 1건

  1. 2020.02.18 [Elasticsearch] Block-Max WAND 가 뭔가요?

[Elasticsearch] Block-Max WAND 가 뭔가요?

Elastic/Elasticsearch 2020. 2. 18. 14:48

Top N 개에 대한 문서를 검색 하기 위한 성능 개선 제안으로 2012년에 처음 이슈화 되었던 것 같습니다.

처음에 저도 WAND 가 뭐지?? 했었는데요.

 

기억력이 나빠서 자꾸 잊어버리네요.

 

Weak and = Weak AND = WAND 이렇게 됩니다.

즉, Elasticsearch 에서는 minimum_should_match 라는 개념이 들어가 있다는 것인데,

정확도가 떨어지지 않는다고 합니다.

어찌되었든,  WAND와 유사 개념이라고 보시면 이해 하기 쉬우실 것 같습니다.

 

근데 앞에 보시면 Block-Max 라고 붙어 있죠.

이걸 또 초간단하게 설명 하면 문서를 특정 블럭단위로 묶으고 그 안에서의 Max Score 를 기록해 두는 방식 입니다.

이렇게 해서 문서 스캔 범위를 줄이게 되어 성능성 이득을 볼 수 있는 내용이라고 보시면 될 것 같습니다.

 

뭐 문서랑 알고리즘을 잘 읽어 보시면 더 심오한 내용이 있으나 쉽게 접근하는 것도 중요하다고 생각 하기 때문에 이렇게 정리 하도록 하겠습니다.

 

자세한 내용이 궁금하신 분은 아래 문서 보시면 됩니다.

http://engineering.nyu.edu/~suel/papers/bmw.pdf

bmw.pdf
0.32MB

 

 

더불어 Elastic 공홈에 올라온 관련 글 링크 입니다.

https://www.elastic.co/blog/elasticsearch-7-6-0-released
https://www.elastic.co/blog/faster-retrieval-of-top-hits-in-elasticsearch-with-block-max-wand
https://www.elastic.co/blog/index-sorting-elasticsearch-6-0

 

여기서 추가적으로 나오는 기법들이  

 

- Early Termination

이건 탐색 할 때 특정 조건에 맞춰 전체를 스캔 하지 않고 중간에 멈추고 스캔한 문서를 대상으로 리턴 하는 방식입니다.

- Document At A Time

문서에 대한 포인트 탐색 으로 보시면 될 것 같고 성능이 우수 합니다.

- Term At A Time

색인어에 대한 탐색을 하는 것으로 별도의 데이터구조에 따른 병목이 발생 할 수 있습니다.

 

등이 있습니다.

 

최종 정리를 하면,

1. Top N 개에 대해서 빠르게 조회를 한다.

2. 정확도가 떨어지지 않는다.

3. 그러므로 고민 하지 말고 최신 Elasticsearch 를 사용 하면 알아서 성능적 향상을 가져 올 수 있으니 사용 하시면 된다

는 이야기 였습니다.

 

: