대용량 검색 처리를 위한 역색인

정보검색 · 2019. 12. 24. 13:52

 

보통 million(백만) document 이상의 data-set의 환경에서 사람들은

useful 한 information 을 찾으려고 한다. 


따라서 데이터 덩어리(Data-Set)에서 유용한 정보(Useful-Information)을 채굴하는(찾아내는,mining) 것이 중요한 영역이 되었고, 이것에 대해 주로 연구하는 “데이터마이닝(Data Mining)” 분야가 발전하게 된 것.

 

 

100만개의 글에서 "집 사기" 검색을 한다고 가정.

 

전통적인 방식은 다음과 같음.

 

1) WHERE = 검색방식

'집 사기'

 

검색어와 일치하는 문서만 선택이 된다. 즉, 문서 결과를 거의 얻지 못함.

 

2) WHERE LIKE 검색방식

 

검색어가 문서내용에 포함되어있는 경우 선택이 된다.

1번 보다는 진화했지만 해당 문장이 정확히 일치하는 경우가 적기 때문에 결과를 거의 얻지 못함.

 

3) 화이트스페이스 토크나이저 AND 검색 방식

사용자의 쿼리를 화이트스페이스로 쪼개서 AND 검색을 실시

 

문서내용에 사용자의 검색어의 모든 단어가 포함된 경우를 찾는다.

이전 방식과 비교해서 상당히 많이 향상된 결과를 보여주지만 해당 단어가 모두 포함된 문서가 아니면 결과에 포함되지 않는다.

 

4) 화이트스페이스 토크나이저 OR 검색 방식

사용자의 쿼리를 화이트스페이스로 쪼개서 OR 검색을 실시

 

문서내용에 사용자 검색어 중 하나라도 포함되는 경우를 찾는다.

원하는 문서를 찾아준다는 점에서 매우 우수하나, 어느 하나의 단어만 포함되도 되므로 전혀 관계없는 결과물도 추출됨.

 

 

4번이 정말 좋은 방식이긴한데 몇가지 단점이 있음 (게시글 2만개 까지는 위의 검색방식이 아주 효과적임)
의미없는 결과값

검색 대상이 누적되면서 검색 부하 오래걸림.

 

 

당연히 역색인을 사용해야함.

 

1. Inverted Index

1~9 문서를 역색인한 결과가 오른쪽 Lucene's inverted index이다.

 

becoming home 이라고 검색하면

 

becoming에 대한 문서 8번 문서가 반환

home에 대한 문서 2,5,7,8번 문서가 반환 

 

8번이 가장 유사한 결과물이라고 알게된다.

 

2. Inverted Index with Term Position

단어 값의 추가 정보를 얻을 수 있다. (단어의 위치)

이러한 방식의 추가정보는 검색 결과를 향상시킬 수 있다.

 

new home을 검색했다고 가정하면 

new의 4,5,8번 문서가 반환된다.

home의 2,5,7,8번 문서가 반환된다.

 

AND 조건으로 검색한다고 하면

 

5,8번 문서가 반환되는데

new 다음에 home이 나타는 문서이기도 하다.

 

단어가 연속되는지 (new home) 여부를 빠르게 파악이 가능하고 

단어 사이의 값을 찾을 수도 있다.

 

이것을 활용해

 

new home, new brand home, new super cheap home 등이 결과에도 포함될 수 있는 것이다. (proximity search)

 

https://blog.lael.be/post/3056

 

대용량 검색 처리를 위한 inverted index (역색인) 설명

#최종 수정 : 2017-03-22 – 내용과 예제를 보강하였습니다. 이 개념은 ElasticSearch 나 Apache Solr 를 다루기 위해 필수적으로 알아야 할 개념입니다. 라엘이의 한마디 : 역방향 인덱스(inverted index)는 원래 대용량 텍스트 검색을 위해서 고안된 방법입니다. 요즘의 SNS에서 주로 사용되는 #태그 검색…

blog.lael.be

https://blog.naver.com/dpfkdlt/221463887998

 

Inverted Index

IR 기본 용어에 대한 간단한 정리IR이란?정보검색이란?카드번호를 알아내기 위해 지갑에서 카드를 꺼내...

blog.naver.com