또 참사가 일어나고 말았습니다.
굳이 하인리히 법칙을 이야기 하지 않더라도, 침몰전에 수많은 징후들이 있었음에도 불구하고 결국엔 대형참사가 또 일어나고 말았습니다.
기존 삼풍백화점 붕괴, 서해 훼리호 침몰 사건과 다른점은 기존 재난 사건들은 사고소식과 정보들을 메이저 언론이 주도하여 사람들에게 알렸으나,
세월호 침몰사건은 메이저 언론 보도조차 믿지 못하는 다양한 시선(보도)들이 나오고 있다는 것입니다.
한 일본기자의 세월호 침몰 관련 칼럼 에서 이야기 하듯, 비단 선장과 해운회사만의 잘못이 아닙니다.
기자가 이야기하듯, 사회라는 시스템안에서 악인을 만들기는 쉽습니다.
선장, 해운회사 대표, 안전검수 기관 등등.
이사람들 사법처리 해서 끝나는 문제가 아니라는건 이제는 우리 모두 알고있잖습니까?
어긋난 사회 윤리의식, 제도권의 안전장치 미숙, 운항 책임자의 자부심 고갈, 언론의 잘못된 보도, 정치가들의 표몰이용 선동 등등.
진짜 악마와 싸워야 합니다.
진짜 악마를 상대하는것은 시간이 걸리는 문제입니다.
하지만 그럼에도 불구하고 1년, 10년이 걸리더라도 끈질기게 싸우고 또 싸워야 합니다.
그래야 최소한 인재로 인한 재난은 어느정도 피할수 있습니다.
당장 저부터 실행에 옮기렵니다.
모두 편안한 하루 되시길 빕니다.
2013년 11월 25일 월요일
Solr 검색의 이해 - Term 과 Slop
진행 중인 Site 에서 Solr 용어표를 작성하다가 아예 블로그에 옮깁니다.
위의 용어표를 보면 알겠지만, 모든 검색엔진에서는 색인(Index) 및 검색(Search)의 기준이 되는 단위가 존재하는데, Lucene 은 term 이라는것 을 기준으로 사용하는걸 알수 있습니다.
slop 관련 잘 설명되어 있는 문서는 여기를 참조하시기 바랍니다.
요약하자면, txt 파일에 다음과 같은 내용이 있을때
"hamburger steak" 질의는 "hamburger steak"~0 과 동일한 결과를 나타냅니다.
다음은 Solr Wiki 의 내용을 참고하여 자체적으로 작성한 각 용어에 대한 설명입니다.(Glossary)
Lucene검색엔진 라이브러리. 실제 검색을 담당하는 로직과 모든 알고리즘이 포함되어 있음. 라이브러리는 여러 S/W 의 집합을 의미함. SolrLuene 을 이용한 사용자 검색 플랫폼. 웹기반으로 사용자와의 인터랙티브한 질의응답이 가능하도록 만든 UI 플랫폼. TermsLucene 에서 사용하는 검색어 단위. term 에는 Single term 과 Phrases 라는 두가지 타입의 term이 존재함.
Single term 은 "hello" 나 "dolly" 와 같이 한단어로 이루어지며, Phrase 는 "hello dolly" 와 같이 인용부호로 감싸여진 여러 단어로 이루어진다.Index 색인.
문서를 검색이 가능하도록 문서내용을 Lucene 의 자료구조로 변환하여 컴퓨터에 저장하는 행위. Operator연산자. 대표적으로 "AND" 와 "OR" 연산자가 있음.
OR 연산자는 두 term 들을 연결하여 이 term 들중 하나라도 문서에 존재하는지 검색하며 이는 합집합 연산과 동일함.
AND 연산자는 두 term 을 모두 갖는 문서들을 검색하며 이는 교집합 연산과 동일하다. "jakarta apache" 와 "jakarta lucene" 과 같이 Phrases terms 를 포함하고 있는 문서들을 검색하려면,
"jakarta apache" AND "jakarta lucene"
두개의 terms 사이에 AND 연산자를 삽입하여 질의하면 된다. ScoreLucene 에서는 모든 검색결과에 Score 를 계산하고, 우선순위를 지정하여 높은순으로 사용자 에게 반환함.
Score 알고리즘은 Index 알고리즘에 의존적이기 때문에 Index 알고리즘을 먼저 이해하여야 하나, 정리하자면 다음과 같이 여러 요소들이 같이 계산됨
- Term Frequency
- Inverse Document Frequency
- Coordination Factor
- Field Length
BoostLucene은 발견된 term 을 기반으로 문서가 일치하는 정도를 판단하는 기능을 제공함.
term을 boosting 함으로써, 문서의 검색결과를 제어할수 있다. 사용법은 term 의 끝에 boost factor(숫자)와 함께 캐럿 기호"^"를 사용한다.
기본 Boost factor 는 "1" 임. 예를 들어 질의어를 다음과 같이
(title: "축구" OR title: "한일전")^1.5 OR (content: "축구" OR content: "한일전")하면 content 와 title 모두 "축구" 와 "한일전" 문구가 포함된 검색결과를 리턴하지만, title 검색결과를 우선적으로 리턴함.Proximity matching Lucene 은 terms 간의 distance 검색을 지원함.
"축구" 와 "한일전" 이라는 단어가 4개의 다른 terms 사이에 있는 문서를 검색하고자 한다면,
"축구 한일전"~4위와 같이 와 숫자기호(slop)를 사용하여 질의를 하면 된다. SlopSlop 은 Lucene 에서 사용하는 검색범위의 단위라 할수 있다.
Proximity match 검색에서 "축구 한일전"~4 와 같이 검색을 하였으면 slop 은 4이며
"축구 한일전"~3 으로 검색하면 3 slop 을 준것임.
당연히 두개의 검색결과는 차이가 있다.
위의 용어표를 보면 알겠지만, 모든 검색엔진에서는 색인(Index) 및 검색(Search)의 기준이 되는 단위가 존재하는데, Lucene 은 term 이라는것 을 기준으로 사용하는걸 알수 있습니다.
slop 관련 잘 설명되어 있는 문서는 여기를 참조하시기 바랍니다.
요약하자면, txt 파일에 다음과 같은 내용이 있을때
Here are some foods that Deron likes: hamburger french fries steak mushrooms artichokes"hamburger steak"~1 과 "hamburger steak"~2 으로 했을때 검색결과의 차이점을 눈여겨 보시기 바랍니다.
"hamburger steak" 질의는 "hamburger steak"~0 과 동일한 결과를 나타냅니다.
Hit: C:\projects\workspace\demo\filesToIndex\deron-foods.txt Query: contents:"hamburger steak" Number of hits: 0 Query: contents:"hamburger steak"~1 Number of hits: 0 Query: contents:"hamburger steak"~2 Number of hits: 1 Hit: C:\projects\workspace\demo\filesToIndex\deron-foods.txt Query: contents:"hamburger steak"~3 Number of hits: 1 Hit: C:\projects\workspace\demo\filesToIndex\deron-foods.txt Searching for 'french fries' using QueryParser Type of query: BooleanQuery Query: contents:french contents:fries Number of hits: 1 Hit: C:\projects\workspace\demo\filesToIndex\deron-foods.txt Searching for '"french fries"' using QueryParser Type of query: PhraseQuery Query: contents:"french fries" Number of hits: 1 Hit: C:\projects\workspace\demo\filesToIndex\deron-foods.txt Searching for '"hamburger steak"~1' using QueryParser Type of query: PhraseQuery Query: contents:"hamburger steak"~1 Number of hits: 0 Searching for '"hamburger steak"~2' using QueryParser Type of query: PhraseQuery Query: contents:"hamburger steak"~2 Number of hits: 1 Hit: C:\projects\workspace\demo\filesToIndex\deron-foods.txt
피드 구독하기:
글 (Atom)