개발관련/Lucene,ElasticSearch
2015. 10. 30. 15:27
루씬은 document기반의 저장방식으로 각 document의 field를 색인 하게 된다.
색인은 각 분석기의 특징대로 색인을 하며, 검색 시 그 색인을 기반으로 검색하게 된다.
db와 틀린점은 머 내생각이니 다음과 같은데...
1. db는 특정 컬럼에 값을 insert 한다는 개념이 강하다. 루씬은 insert 한다가 아닌
특정 컬럼을 어떻게 색인할 것인가로 접근하는게 맞는듯 보인다.
2. field추가가 자유롭다. 여느 nosql도 마찬가지겠지만, 루씬 역시, 특정 컬럼을 추가할 때 field를 추가하면된다.
3. 색인은 특정 값이 아닌 문장 단위의 것들로 한다. 물론 아닐경우도 있지만, 색인은 문장 자체를 설정된 분석기로 색인을 하는것이다.
이때문에 단순한 컬럼은 색인을 하지 않는다. 이유는 !! 검색엔진 이니까!
4. 검색 시 쿼리는 가공(?)을 해야한다. 물론 단순한 값을 할 경우는 필요없지만, lucene을 제대로 사용할려면, 검색 키워드를 가공을 하여 검색할 경우 더 큰 빚을 발휘 하는듯 보인다. ex) lucene 를 검색 시 lucening로 검색 하면 좋지 않을까? 머 이딴거.....
머 이정도 인듯 보인다.
위에 그림은 전형적인 루씬의 그림으로 index는 index document 과정이 필요하고, 검색 시는 search가 필요하다.
ps: 아마도 뒤에 lucene 관련 내용은 3.6 기반으로 설명할 것이다.(버전이 중요함.. ㅠㅠ)