|
Elastic/Elasticsearch 2013. 1. 22. 18:49
아주 기초가 되는 내용인데.. 웹에서 돌아 다니다가 발견해서 그냥 스크랩해 봅니다. 원본출처는 사이트가 없어진것 같고, 아래 링크에서 퍼왔내요. http://web.skhu.ac.kr/~mckim1/Lecture/IR/Note/hwork.html
Stopwords(불용어)
불용어란 검색엔진이 검색에서 무시해 버리는 문자열을 의미합니다. 전치사나 관사 a, an, the, that, this, in, on, by, if, is, are, as, be, but, of, for, to, from, with, you, he, there, may 등과 같이 의미없는 단어는 검색어로 취급되지 않는 것입니다. 검색식에 이러한 불용어나 특수기호(마침표,콤마,/,&,%,@,*,? ...)를 반드시 포함시키고자 한다면 대개는 구절검색 기능을 이용합니다. 어떤 검색도구에서는 불용어도 검색대상에 포함시킬 것인지에 대한 옵션을 제공하기도 합니다.
Any terms, Thesaurus Extended Derivatives 집단검색어,유의어,시소러스, 확장검색
예를 들어 검색을 '대도시'라고 썼을 때 전국의 대도시 지명들을 OR조건으로 모두 나열한 것과 같은 효과를 내는 검색방식입니다. 이것은 집단검색어 파일을 따로 갖고 있는 데이터베이스에서만 사용할 수 있습니다. 비슷한 기능으로서 유의어사전을 지원하는 검색도구들이 있습니다. 대표적인 것이 심마니입니다. 심마니에서는 예를 들어 '장애인#'이라고 검색식을 입력하면 장애인 뿐만 아니라 장애자, 장해인, 장해자 등도 찾아 줍니다. 이와 같이 사용자가 검색식에 입력한 문자열과 꼭 같지 않더라도 의미상 같거나 관련이 있는 용어들을 모아 검색가능하도록 구축한 데이터베이스를 시소러스(Thesaurus) 또는 유의어사전이라고 합니다. 약간 다르기는 하지만 주제어(Topic) 검색이라는 것이 있습니다. 영어성경검색이 좋은 예입니다. Poor라는 주제어를 입력하면, Beneficence; Giving; Liberality; Orphans; Poverty; Widow 등에 관하여도 볼 수 있습니다. 참고로 Lycos의 카탈로그나 야후의 디렉토리는 메뉴방식으로 원하는 정보를 선택하지만 사실은 내부적으로는 Topic별로 검색이 이루어지는 것입니다. 또 다른 하나의 예는 알파벳 순서에 의한 단어의 범위(Alphabetical Range of Words)를 지정하는 중괄호 { } (braces)입니다. Deja News에서 {monkey monkeying}라고 검색식을 입력하면 영어사전(엄밀히 말하면 Deja News의 색인집인 시소러스)의 monkey부터 monkeying까지 그 사이에 나오는 모든 단어가 검색대상이 됩니다. Extended Derivatives 영국의 웹검색기인 WWLib Extended Search Interface는 좀 특별한 확장검색을 합니다. 1.명사의 복수형도 검색하고 (Depluralisation) 2.동사의 분사형이나 진행형도 검색하며 (Degerundisation), 3.관련단어도 검색(Related words)해 주는 것이지요. 예를 들어 biology의 관련어에는 biologist, biologically 등이 있습니다.
Boolean Connectors 부울연산자 : 더하기, 빼기, 곱하기
1. AND 연산자 좌우의 검색어가 모두 나타나는 자료를 찾습니다. (예 welfare and rehabilitation) 주로 and나 플러스 기호(+)로 표시하지만, 연산자 없이 그냥 공백만으로 and연산을 하거나 그외 엠퍼센드 기호(&)를 쓰는 경우도 있습니다. 심마니에서는 '그리고/와/과/및' 등의 한글 연산자도 사용할 수 있습니다.
2. OR 연산자 좌우의 검색어 중 어느 하나만이라도(any word) 들어 있는 자료를 찾습니다. (예 aged or alzheimer) 주로 공백이나 or를 사용하지만, 가끔 플러스 기호(+)나 콤마(,)를 사용하기도 합니다. 검색도구에 따라서는 적합성(Relevancy) 점수를 부여할 때 or연산자 좌우의 단어가 모두 들어 있는 자료에 높은 점수를 주기도 합니다.
3. NOT 또는 AND NOT 연산자 앞쪽의 검색어를 포함하되, 뒤쪽의 검색어는 들어있지 않은 자료만 찾습니다. (예 retardation not illness) 주로 마이너스 기호(-)나 not를 많이 사용하지만, 느낌표(!)나 &!를 사용하기도 합니다.
Phrase Searching 구절검색
두개 이상의 단어가 순서대로 연속해서 나오는 것을 찾습니다. 예 "special education for the disabled children" 보통 구절을 따옴표(" ")로 싸 주는데, 검색엔진은 이 구절을 하나의 긴 문자열로 취급하는 것이지요. 주로 두 단어 이상으로 되어 있는 전문용어 등을 찾을 때 사용하지만, 검색 문자열에 특수기호(마침표,콤마,/,&,%,@,*,? ...)나 불용어까지 포함시키려는 경우에도 사용합니다.
※ 구절검색을 할 경우 절단검색 기호(*)는 사용할 수 없고 불용어가 아닌 단어를 두개 이상 포함해야 합니다.
Grouping by Parentheses 검색식의 문법
인터넷의 검색도구들에서도 대체로 여러개의 검색어와 연산자들을 결합하여 복잡한 검색식을 사용할 수 있습니다. 그러나 대개는 상용 데이터베이스와는 달리 and연산자가 or연산자보다 우선되는 것도 아니고 그저 검색식의 왼쪽으로부터 오른쪽으로 차례대로 연산하는데, AltaVista처럼 괄호를 사용하여 검색 연산순서를 바꿀 수 있는 것도 있습니다. 예를 들어, 검색식을 vocational and training or placement (알타비스타라면 +vocational +training placement라고 쓰겠죠.)라고 입력하면 vocational과 training이 동시에 들어 있거나, placement가 들어 있는 자료를 찾습니다. 앞에서부터 차례대로 연산하기 때문입니다. 만약 장애인의 직업훈련이나 직업알선(배치)에 관한 자료를 원한다면 vocational AND (training OR placement) 와 같이 우선 연산하고자 하는 부분을 괄호로 그룹지어야 합니다. 이와 같이 괄호로써 연산자의 조합을 조정할 수 없는 검색도구에서라면 AND조건이 필요한 검색어를 뒤로 보내어 training OR placement AND vocational와 같이 입력하는 것이 좋습니다. AltaVista라면 training placement +vocational 이렇게 입력해야겠지요.
Proximity Searching, Concatenation 인접연산자
인접연산자는 앞뒤의 검색어가 동시에 나와야 한다는 점에서 and연산과 비슷하지만 두 검색어가 바로 옆에 또는 일정 거리내에 인접하여 있어야 합니다. Welfare-Net,Korea와 같은 구조의 문자열을 찾으려면 주로 따옴표로 전체를 묶어 하나의 구절로 검색하는 것이 보통이지만 구절검색이 지원되지 않을 때에는 하이픈(-)이나 콤마(,) 등 특수기호나 불용어 자리에 인접연산자를 쓰면 좋습니다. ※ 앞뒤 검색어가 얼마나 가까이 붙어 있어야 하는가, 두 검색어 사이에 몇개까지의 단어가 끼어드는 것을 허용하는가 하는 인접정도는 검색도구에 따라 조금씩 다릅니다. 100단어 이내, 5글자 이내, 또는 한 문단내에 인접해 있는 조건으로 해석되기도 합니다. ※ 인접연산자는 보통 하나의 검색식 내에서 하나만 사용할 수 있습니다. 여러개의 인접연산자로 구성된 검색식은 거의 허용되지 않을 뿐 아니라 그렇게 써야 할 경우도 거의 없습니다. 또한 구절검색식과 인접연산자를 함께 사용할 수 없습니다.
검색어간의 순서까지 지정하는 ADJacent, 또는 Preceding 연산자 좌우의 검색어가 지정된 순서로 인접해 들어 있는 자료를 찾습니다. 다이얼로그의 Within 연산자와 같습니다.
예1 mental adj retardation Adj는 Adjacent(인접한)의 약자입니다. 예2 : attitude p3 disab* REHABDATA에서는 절단검색어는 인접연산자와 함께 사용할 수 있으나 구절검색어는 인접연산자와 함께 쓸 수 없습니다. 여기서 p는 preceding(앞에 오는)의 약자로 쓰였습니다.
검색어간의 인접관계만 지정하는 NEAR 이는 좌우 검색어가 앞뒤 순서에 관계없이 인접해 있는 경우를 말합니다. 다이얼로그의 Near 연산자와 같은 것이지요.
예1 : aged near/25 "day care" (WebCrawler) 예2 : welfare ^10 reform (Deja News) Deja News에서는 구절검색어나 절단검색어를 인접연산자와 함께 사용할 수 없습니다. 예3 : attitude w3 disab* (REHABDATA) REHABDATA에서는 절단검색어는 인접연산자와 함께 사용할 수 있으나 구절검색어는 인접연산자와 함께 쓸 수 없습니다. 여기서 w는 Within의 약자로 쓰였습니다. attitude for the disabled의 경우 w3을 써야 합니다. 즉, 인접연산기호와 함께 쓰이는 숫자에는 끝 단어도 계산되는 것입니다.
Truncation 절단검색
검색식에 입력된 문자열과 정확히 일치하는 단어를 찾아내는 것을 완전검색(Precise Searching)이라고 합니다. 검색도구에 따라 Whole words, Complete words, 똑같은거, Exact, Word based search 등으로 표현하는 옵션을 제공하기도 합니다. 예를 들어 입력된 용어가 'handicap'이면 정확히 handicap만 찾으므로, handicapped는 검색되지 않습니다. 검색식에 입력된 문자열로 시작하는 단어는 모두 검색해 준다든가 하는 기능을 절단검색이라고 합니다. 절단검색에는 검색어 뒷부분의 변화를 허용하는 우절단을 비롯하여 앞부분의 변형을 허용하는 후방일치 검색 등이 있습니다.
전방일치검색=어근검색=우절단검색 Right-Truncation 표현형식 : 단어* (또는 %단어) 절단검색 옵션을 선택하거나 검색어 뒤에 절단기호를 덧붙입니다. 절단기호(가변글자기호)로는 대부분 별표(*)를 사용하지만, 임의의 글자 수만큼 물음표를 사용하는 경우도 있습니다. 한편, 검색식에서는 절단기호(*)를 쓰지 않고 우절단검색, Word-stem based search, Substrings, Start with, 전방일치검색 등으로 표시한 옵션을 선택하게 되어 있는 검색시스템들도 많습니다. 단순히 절단검색이라고 하면 이 우절단검색을 의미한다고 보셔도 됩니다. 예 : disab* 용도 : 검색용어의 끝부분을 임의의 문자로 지정하는 것으로서, 영어의 경우에는 주로 단수형과 복수형(disability, disabilities / child, children)을 한꺼번에 검색하거나, 품사의 차이로 어미변화를 일으키는 용어(volunteer, volunteering, voluntary)를 검색할 때 사용하고, 우리말과 일본어의 경우 앞이 같은 말로 시작되는 유사어나 복합어(장애, 장애인, 장애인복지, 장애자, 장애인시설, 장애연금)를 검색하고자 할때 이용합니다.
후방일치 : Left-Truncation 표현형식 : *단어 (또는 단어%) 대부분 별표(*)를 사용하지만, 임의의 글자 수만큼 물음표를 사용하는 절단방식도 있습니다. 인터넷상의 거의 모든 검색도구들이 후방일치 절단검색을 지원하지 않습니다. 영국의 웹검색기인 WWLib Extended Search Interface에서는 이 기능을 지원합니다. 예 : 정보탐정에서 검색식을 '장애%'라고 쓰면 지체장애, 청각장애, 시각장애 등 '장애'로 끝나는 용어들을 찾아 줍니다. 용도 : 검색용어의 시작부분을 임의 문자열로 지정하는 것으로서, 영어단어의 경우 주로 화합물의 검색을 위해 사용한다고 하는데, 위의 예와 같이 이 검색식은 한글 복합어를 검색할 때 특히 유용합니다.
사이에 끼는 가변글자 표현형식 : 단어?단어 예 : wom?n 용도 : women, woman을 찾습니다. 다이얼로그와 같은 데이터베이스에서 주로 사용하는 것인데, 인터넷상의 정보검색엔진에서는 이런 검색방식을 지원하는 경우가 거의 없습니다. 다만 이와는 다르지만 영국의 웹검색기인 WWLib Extended Search Interface에서는 앞뒤로 절단검색하는 기능도 있습니다.
절단검색시 주의사항 절단검색어를 사용할 때, 어간이 짧은 경우에는 관계없는 용어들이 같이 검색되므로 어근을 너무 짧게 지정하지 않도록 주의하여야 합니다. 예를 들어, communication, communicate등 의사소통에 관한 자료를 찾기 위해 검색식을 com*이라고 쓰면 community, computer, compass, coma, commercial ...등 전혀 원하지 않는 용어들까지, 또는 너무 많은 용어들이 검색대상이 되어 버립니다.
Field (Context) Searching 필드 제한 검색
웹문서의 title, head, body, address 등이나 뉴스그룹 기사의 author, subject, newsgroup name 등 문서의 특정 부분(필드 또는 context라고 함)으로 제한하여 검색하면 보다 정확하고 빠르게 검색할 수 있습니다.
필드제한 검색의 유형 검색식에 직접 필드제한자를 붙이는 경우 가장 유연한 검색방식입니다. 고급 서처들에게는 검색식내에 직접 여러 연산기법들을 사용할 수 있게 하는 엔진이 좋은 법이지요. 예1 : AltaVista(예: title:"Department of Health and Human Services") 알타비스타의 필드제한 검색 특히, title, url, link필드에서의 검색은 정확한 자료를 찾아내는데 큰 도움이 됩니다. 그리고 이것은 과거에 책갈피를 만들어 둔 좋은 자료가 URL의 무단변경으로 인하여 더 이상 찾아내기 어려울 때 아주 유용한 검색기법입니다. 예를 들어 +url:sprc +title:"Social Policy Research Centre"의 검색은 지금의 정확한 주소는 모르지만 url과 타이틀중에 포함된 단어로써 찾아내는 것입니다. 나의 홈페이지,웹문서를 다른 곳들에서 얼마나 많이 링크시켜놓고 있는지를 알고 싶을 때 +link:http://welfare.or.kr -host:welfare.or.kr 이와 같이 검색식을 입력하면 됩니다. 예2 : Deja News(예: ~g alt.child*) 검색식을 입력한 다음 검색대상 필드를 옵션으로 선택하는 경우 예1 : Galaxy 예2 : OpenText Power Search 필드별 검색식 입력상자에 검색식을 작성하는 경우 예1 : REHABDATA 예2 : 유럽사회과학정보협의회 통합검색 CESSDA
필드내에서의 비교연산자 Comparison and Range Searches 필드검색에 있어서, 특히 위의 세번째 유형처럼 각 필드별로 검색식 입력상자가 따로 있는 경우는 좀더 진보된 고급 연산자를 지원하는 것도 있습니다.(예:REHABDATA) 인터넷상의 일반 검색엔진에서는 좀처럼 보기 어려운 연산자이기는 하지만 고급 문헌검색엔진(Dialog, BRS ...)이나 일반 DBMS(dBASEIII+, Approach...)에서는 다 지원되는 것입니다. 연산자기호
의미
예제 = Equal to (exact match) =access
> Greater than >5500
>= Greater than or equal to >=5500
< Less than <1-Jan-1996
<= Less than or equal to <=TX
: Within range 1993:1996
※ 주의사항 비교연산자는 수치의 대소뿐만 아니라, 문자열의 알파벳 순서(엄밀히 말하면 코드값), 날짜의 선후를 비교하는데에도 사용됩니다. Equal to 연산자(=)는 해당 필드내에 정확히 그 문자열만 들어 있어야 한다는 것입니다. 다른 단어(들)이 더 있어서도 안되는 것입니다. 이는 해당 필드내에 들어 있는 여러 단어 중 하나에 대하여 좌우 첨가없이 정확히 일치하는 Whole word(절단검색의 반대)를 찾는 것과는 또 다른 것입니다. 범위(range)연산기호 :대신에 ..등을 사용하기도 합니다. REHABDATA는 날짜필드에서 비교연산자와 함께 날짜값의 일부만 쓰는 경우, 즉 년월일을 다 적지 않고 년도나 월만 쓰는 경우에는 해당 년도 또는 월의 첫날부터 찾는 것으로 간주합니다. 그리고 날짜형식은 거의 모든 형식을 다 지원하지만 or연산자와 혼동될 수 있는 slash (/)는 쓰지 마십시오. 슬래시를 사용할 경우는 날짜 전체를 따옴표로 묶어야 합니다(예:"6/25/1996"). June 1995 또는 6-95와 같이 쓰시면 무난합니다.
Relevancy, Weight 적확도,정확성,우선순위
히트(hit) 검색결과 추출된 자료 또는 그 건수를 히트(hit)라고 합니다. 예를들어, 사용자가 입력한 검색식의 조건에 맞는 자료가 1,000건이 나왔을 경우 "1,000건이 hit되었다"라고 표현합니다. 이 경우 히트수는 1,000건이 되는 것이지요. 적합성(relevancy) 또는 우선순위(weight) 적합성이란 히트된 자료내에 우리가 요구한 검색어가 얼마나 중요한 곳에 들어 있는가? 또는 얼마나 많이 그리고 얼마나 여러번 나오는가? 등을 기준으로 계산하는 정확성의 척도입니다. 예를 들어 웹문서의 타이틀이나 헤드 영역에 해당 단어가 들어 있거나 자료 중에 우리가 입력한 검색식에 딱 맞는 문자열(들)이 들어 있거나 같은 검색어라도 문장 중에 여러번 나온다면 우리가 원하는 자료일 가능성이 높다는 뜻이 된다는 것입니다. 정확도를 평가하는 기준은 검색엔진에 따라 조금씩 다릅니다. 몇가지만 예를 들어 봅시다.
라이코스는 입력된 검색어들간의 인접정도와 출현빈도에 따라 적합성의 점수를 매깁니다. loose match는 적합성점수가 0.1이상인 자료를 찾아주고, 가장 높은 strong match는 0.9이상인 자료만 보여줍니다. 검색결과수(hit)나 적합성의 차이도 있지만 검색소요시간도 크게 차이나는데, strong match를 선택하면 아주 빨리 결과를 보실 수 있습니다. 마젤란은, 검색식에 입력된 검색어들 중에 몇개나 맞추는가와 출현횟수, 검색어가 웹문서의 Title(넷스케이프의 제목막대에 표시되는 문자열)이나 URL 또는 마젤란의 Review에 들어 있는가 를 기준으로 적합성의 점수를 부여합니다. 그리고 검색결과는 이 적합성이 높은 자료부터 표시됩니다. 기타 알타비스타나, 심마니, 미국 정부기록,간행물 데이터베이스 등의 경우도 비슷한 방법으로 정확성을 계산하고 결과에 그 값을 표시하되, 대개는 바로 이 적합성의 점수 순으로 정렬하여 보여줍니다. 적합성과 혼동되기 쉬운 것으로, 소위 사이트의 점수 (Rating)가 있습니다. 예를 들어, 마젤란 경우, 각 사이트를 평가하여 사용의 용이성, 갱신주기, 편집기술, 흥미유발정도 등을 기준으로 점수를 부여하고 그 결과를 별표(one to four stars)로 표시하는데, 별표가 많으면 점수가 높은 것입니다. 그러나 이 점수가 우리가 찾고자 하는 검색식에 얼마나 적합한가를 의미하지는 않습니다. 단지 그 사이트가 일반적으로 좋은 곳이냐 하는 것을 의미할 뿐입니다. 개별 자료의 정확도와는 전혀 다른 의미의 점수인 것입니다.
Elastic/Elasticsearch 2013. 1. 22. 14:25
원본출처 : http://cafe.naver.com/korlucene
형태소사전은 모두 8개로 구성되어 있습니다. 그 중 하나는 음절정보이므로 실제로는 7개로 봐야 하겠군요. 사전은 org/apache/lucene/analysis/kr/dic 아래에 있습니다. 이 사전은 모두 jar 에 함께 패키징되어 있는데, KoreanAnalyzer 는 우선 classpath 에 있는 파일에서 찾고 없으면 jar 에 패키징되어 있는 것을 읽어 옵니다. 따라서 커스터마이징된 사전을 사용하고자 한다면 %CLASSPATH%/org/apache/lucene/analysis/kr/dic 아래에 각자의 사전을 저장해서 사용하면 됩니다. 각 사전에 대한 자세한 설명은 다음과 같습니다. 1. total.dic : 기본사전 용언과 체언을 포함한 기본사전입니다. 사전의 형식을 보면 다음과 같이 구성되어 있습니다. ================ 납부,10011X ================ 콤마(,)를 중심으로 좌측은 단어이고 우측은 단어정보입니다. 단어정보는 6글자로 구성되어 있는데 각 글자는 단어의 사용규칙을 나타내며 아래와 같습니다. ========================================================= 1 2 3 4 5 6 명사 동사 기타품사 하여동사 되어동사 불규칙변형 ========================================================= 1~3은 품사에 대한 정보이며, 위에 기술한 각 품사 여부를 나타냅니다. 4~5는 명사인 경우 "하다"와 "되다"가 붙을 수 있는 경우를 나타납내다. 주의)동사는 반드시(0)이어야 합니다. 6은 동사인 경우 불규칙변형의 종류를 나타내며 종류는 아래와 같습니다. B:ㅂ 불규칙, H:ㅎ 불규칙, L:르 불규칙, U:ㄹ 불규칙, S:ㅅ 불규칙, D:ㄷ 불규칙, R:러 불규칙, X:규칙 2. extension.dic : 확장사전 기본사전은 가능한 그 대로 사용하는 것이 좋을 것입니다. 그런데 사전을 조금 보완하여야 할때 확장사전을 사용하면 됩니다. 사전을 구성하는 규칙은 기본사전과 동일합니다. 3. josa.dic : 조사사전 조사들만 모아둔 사전입니다. 각 조사는 한줄씩 구분되어 있습니다. 4. eomi.dic : 어미사전 어미들만 모아둔 사전입니다. 각 어미는 한줄씩 구분되어 있습니다. 5. prefix.dic : 접두어 사전 복합명사를 분해시 2글자 이상의 단어로만 분해합니다. 그러나 "과소비" 같은 경우 "과"를 접두어로 분리해 내어 "과소비"와 "소비"를 색인어로 추출하기 위해 만든 사전입니다. 6. suffix.dic : 접미어 사전 복합명사를 분해 시 "현관문" 같은 경우 "문"을 접미어로 분해하여 "현관문"과 "현관"을 색인어로 추출하기 위해 만든사전입니다. 7. compounds.dic : 기분석 복합명사 사전 복합명사는 명사 사전을 기반으로 최장일치법에 의해 분해를 합니다. 그런데 "근로자의날" 같은 경우 중간에 조사가 포함되어 있으므로 분해가 불가능합니다. 이런 경우 복합명사 사전에 등록을 합니다. 규칙은 아래와 같습니다. ========================================= 근로자의날:근로자,날 ========================================= 콜론(:)을 중심으로 좌측은 복합명사이고 우측은 함께 추출될 색인어입니다. 따라서 위의 경우는 색인어로 "근로자의날","근로자","날" 이렇게 3개가 추출됩니다.
Elastic/Elasticsearch 2013. 1. 22. 11:27
정말 오랜만에 보내요.. 제가 야후에 있을때 봤던 것 같은데.. 국민대 강승식 교수님의 한국어 형태소 분석기...
[한글 Stopword] https://github.com/wonderino/KeywordElection2012/blob/master/hdic/stopword.dic ; ;====================[ 불용어 및 특수색인어 사전 ]====================== ; ; 불용어(stopword)는 자동색인시에 색인어로 추출되지 않도록 하고 싶은 ; 명사들입니다. 즉, 이 파일에 등록된 stopword들은 색인어로 ; 출력되지 않습니다. ; ; 특수색인어는 자동색인시에 1 음절 명사 혹은 숫자로 시작되는 ; 용어가 누락되는 것을 방지하기 위한 것으로 특수색인어로 등록되면 ; 항상 색인어로 추출해 줍니다. ; ; ; *. 이 파일은 반드시 KS 완성형(KS C 5601-1987) 한글코드로 작성되어야 합니다. ; ; 2. line의 첫문자가 ';'이면 comment로 간주하여 무시됩니다. ; ; 3. line의 첫문자가 '_'이면 불용어로서 색인어로 출력되지 않습니다. ; ; 4. line의 첫문자가 '*'이면 특수색인어로서 항상 색인어로 출력됩니다. ; 1 음절 명사(예: 꽃, 핵)나 숫자로 시작되는 용어(예: 3.1절) 등 ; default로 불용어로 간주되는 용어가 누락되지 않게 할 때 사용합니다. ; ; 5. 색인어로 추출되지 않는 한글 명사를 특수색인어로 등록해도 ; 여전히 누락되는 경우가 있습니다. 이러한 용어는 특수색인어로 ; 등록하지 말고 사용자 정의사전(hangul.usr)에 등록하면 됩니다. ; ; 6. 한 line에 하나의 단어(명사)만 허용되며, line 중간에 blank 문자를 ; 허용하지 않습니다. ; ; 7. Text editor로 삽입/삭제할 때 반드시 sorting 순서를 지켜야 합니다. ; sorting 순서가 틀리면 실행할 때 error message를 출력합니다. ; ; 8. 이 사전에 수록될 수 있는 최대 단어수는 10,000단어까지이며, ; 또한 총 60,000bytes를 넘지 않아야 합니다. comment는 제외함. ; ; ; 국민대학교 컴퓨터학부 강승식 ;--------------------------------------------------------------------- ;--.|_ / /| Seung-Shik Kang Tel: (+82-2) 910-4800 ; / | /\ /\| Kookmin University Fax: (+82-2) 910-4868 ; ---- -+ School of Computer Science sskang@cs.kookmin.ac.kr ; () () | Songbuk-gu, Seoul 136-702, KOREA http://nlp.kookmin.ac.kr ;--------------------------------------------------------------------- ; *112 *114 *119 *12-12 *12-12사태 *12.12 *12.12사태 *128메가 *16메가 *1기가 *2000 *2002 *256메가 *3-1절 *3.1절 *386 *386PC *4-19 *4-19혁명 *4.19 *4.19혁명 *486 *486PC *4메가 *5-16 *5-16혁명 *5.16 *5.16혁명 *5.17 *5.18 *586 *586PC *6.25 *6.25사변 *64메가 *911 *D램 ;1IBM연구소 *S램 _a _about _above _across _after _against _all _almost _alone _along _already _also _although _always _among _an _and _another _any _anybody _anyone _anything _anywhere _are _area _areas _around _as _ask _asked _asking _asks _at _away _b _back _backed _backing _backs _be _became _because _become _becomes _been _before _began _behind _being _beings _best _better _between _big _both _but _by _c _came _can _cannot _case _cases _certain _certainly _clear _clearly _come _could _d _did _differ _different _differently _do _does _done _down _downed _downing _downs _during _e _each _early _either _end _ended _ending _ends _enough _even _evenly _ever _every _everybody _everyone _everything _everywhere _f _face _faces _fact _facts _far _felt _few _find _finds _first _for _four _from _full _fully _furhered _further _furthering _furthers _g _gave _general _generally _get _gets _give _given _gives _go _going _good _goods _got _great _greater _greatest _group _grouped _grouping _groups _h _had _has _have _having _he _her _here _herself _high _higher _highest _him _himself _his _how _however _i _if _important _in _interest _interested _interesting _interests _into _is _it _its _itself _j _just _k _keep _keeps _kind _knew _know _known _knows _l _large _largely _last _lastest _later _leastless _let _lets _like _likely _long _longer _longest _m _made _make _making _man _many _may _me _member _members _men _might _more _most _mostly _mr _mrs _much _must _my _myself _n _necessary _need _needed _needing _needs _never _new _newer _newest _next _no _nobody _non _noone _not _nothing _now _nowhere _number _numbered _numbering _numbers _o _of _off _often _old _older _oldest _on _once _one _only _open _opened _opening _opens _or _order _orderd _ordering _orders _other _others _our _out _over _p _part _parted _parting _parts _per _perhaps _place _places _point _pointed _pointing _points _possible _present _presented _presenting _presents _problem _problems _put _puts _q _quite _r _rather _really _right _room _rooms _s _said _same _saw _say _says _second _seconds _see _seem _seemed _seeming _seems _sees _several _shall _she _should _show _showed _showing _shows _side _sides _since _small _smaller _smallest _so _some _somebody _someone _something _somewhere _state _states _still _such _sure _t _take _taken _than _that _the _their _them _then _there _therefore _these _they _thing _things _think _thinks _this _those _though _thought _thoughts _three _through _thus _to _today _together _too _took _toward _turn _turned _turning _turns _two _u _under _until _up _upon _us _use _used _uses _v _very _w _want _wanted _wanting _wants _was _way _ways _we _well _wells _went _were _what _when _where _whether _which _while _whole _whose _whoss _why _will _with _within _without _work _worked _working _works _would _x _y _year _years _yet _you _young _younger _youngest _your _yours _z _가 _가운데 _갈 ; _갑 _걔 _거 _건 ; _걸 _것 겉 _게 _겨 _겸 _겹 _경 _곁 _계 _고 _곱 _곳 _곳곳 _과 _곽 _굄 _구 _권 _그 _그간 _그것 _그곳 _그녀 _그달 _그당시 _그대 _그대신 _그동안 _그들 _그들대로 _그때 _그런고 _그런날 _그런데서 _그런줄 _그럴수록 _그로 _그무렵 _그외 _그이 _그전 _그전날 _그쪽 _근 *글 _급 _깁 _깡 *꽃 ; _꽝 꾐 _끗 _낌 _나 _낙 _낟 _낱 _내게 _내년초 _내달 _내부 _냥 _너 _너나마 _너로 _너와 _너희 _너희대로 _너희들 _네 _네번 _네째 _네탓 _넷 _넷째 _년 _년간 _년도 _녘 _노 놈 _놉 _누가 _누구 _누구누구 _누군가 _뉘 _닢 _다섯째 _다음달 _다음주 _닥 ; _답 _당분간 _대다수 ; _댁 ; _덤 _덧 _데 ; _돗 _되 _두 _둔 _둘 _둘째 _둥 _뒤 _뒷받침 _듯 _등 _따름 _따위 _딴 _때 _때문 ; _땡 _떼 _뜀 ; _런 ; _룰 ; _룸 _리 _릴 _마 _마련 _마리 ; _마지막 _마찬가지 _막 _만 ; _만원 ; _만원씩 _만큼 _맏 ; _맘 ; _맴 _메 _멸 _몇 _무엇 _묶음 _물론 _뭇 _뭣 _밑 ; _바 _밖 ; _백 ; _백만 ; _백만원 _밸 _번 _번째 별안간 ; _볏 ; _본 ; _봉 ; _분 ; *비타민A ; *비타민B ; *비타민C ; *비타민D ; *비타민E _빈 ; _빔 ; _빽 ; _뻥 ; _뼘 _뿐 _사 ; _삭 ; _삵 _샅 _서 _서로 _석 _섟 ; _섶 _세 _세째 ; _셈 _셋 _셋째 속 ; _송 _수 _수십 _수십개 ; _숱 _쉬 쉰 _스스로 _승 식 십 ; _쌈 ; _쌍 _씀 ; _씹 아홉째 _안 _앎 _압 _앵 _야 _얘 _어느편 _어디 _어디론지 _어떤때 ; _억원 엠 _여 _여러가지 _여럿 _여섯째 역 _열째 옆 ; _예 _예년때 _오 _온 _올 _올해 ; _옴 ; _옹 _왜 _요즘 _우 ; _우리 _우리들 _우선 _운운 _움 _움직임 월 *웹 _위해서 ; *윈도95 ; *윈도95시스템 ; *윈도NT _유 _육 _율 _으뜸 ; _을 _음 _이것 _이곳 _이기 _이날 _이달 _이달초 _이듬 _이듬달 _이때 _이런저런 _이런줄 _이번 _이번분 _일곱째 ; _임 _잇 ; _작 ; _잔 _잘 ; _잭 ; _잽 ; _쟁 _쟤 _저것 _저곳 _저기 _저기대 _저긴 _저도 _저런날 _저런줄 _저렴 _저마 _저쪽 _저하 _저희 _적극적 _전날 _전년 _전부 _전부문 _전일 _전체적 _절절 ; _접 _제 _제나름 ; _존 ; _좆 ; _좌 ; _죄 _줄곳 ; _줌 _중점적 ; _쥔 _증 _지 _지난해 _직 _짓 _쪽 ; _찬 ; _채 ; _챙 ; _척 ; _천만 ; _천명 ; _천원 _첫날 _첫째 ; _촉 _최 _최근 ; _충 _취 _층 _치 ; _칭 ; _칸 ; _캡 _컷 ; _켜 ; _콕 _쾌 ; _쿡 ;_크기 ; _큰폭 ; _킥 _타 _탓 _태 ; _토 _톡 ; _톤 _톨 ; _톳 ; _퇴 _투 _퉁 ; _판 ; _패 ; _팽 *페르시아만 _편 _평 ;_평상시 포 폭 ; _폼 _푸르름 ; _푼 픽 ; _필 _하 _하나 _하나둘 _한 _한가운데 _한가지 _한곳 ; *한국HP ; *한국IBM ; *한국IBM연구소 _한마디 _한번 _한쪽 _한편 _할 ; _합 ; _항 *핵 ; _행 ;_향후 _허 _혁 ; _현 ; _호 ; _홉 ; _홍 ; _홑 ; _화 _확 _환 ; _황 ; _홰 ; _획 ; _횡 _후 ; _훅 _휘 ; _흑 _힐 *힘 ; ;=======================[ 불용어, 특수색인어 사전 끝 ]==================== ;
Elastic/Elasticsearch 2013. 1. 22. 11:14
형태소분석기 소스 분석을 위해서 필요한 정보를 하나씩 모아 봐야 할 것 같내요. 우선은 stopwords 부터.. 모아 봅니다. [English Stopword1] a about above after again against all am an and any are aren't as at be because been before being below between both but by can't cannot could couldn't did didn't do does doesn't doing don't down during each few for from further had hadn't has hasn't have haven't having he he'd he'll he's her here here's hers herself him himself his how how's i i'd i'll i'm i've if in into is isn't it it's its itself let's me more most mustn't my myself no nor not of off on once only or other ought our ours
| ourselves out over own same shan't she she'd she'll she's should shouldn't so some such than that that's the their theirs them themselves then there there's these they they'd they'll they're they've this those through to too under until up very was wasn't we we'd we'll we're we've were weren't what what's when when's where where's which while who who's whom why why's with won't would wouldn't you you'd you'll you're you've your yours yourself yourselves |
[English Stopword2] a a's able about above according accordingly across actually after afterwards again against ain't all allow allows almost alone along already also although always am among amongst an and another any anybody anyhow anyone anything anyway anyways anywhere apart appear appreciate appropriate are aren't around as aside ask asking associated at available away awfully b be became because become becomes becoming been before beforehand behind being believe below beside besides best better between beyond both brief but by c c'mon c's came can can't cannot cant cause causes certain certainly changes clearly co com come comes concerning consequently consider considering contain containing contains corresponding could couldn't course currently d definitely described despite did didn't different do does doesn't doing don't done down downwards during e each edu eg eight either else elsewhere enough entirely especially et etc even ever every everybody everyone everything everywhere ex exactly example except f far few fifth first five followed following follows for former formerly forth four from further furthermore g get gets getting given gives go goes going gone got gotten greetings h had hadn't happens hardly has hasn't have haven't having he he's hello help hence her here here's hereafter hereby herein hereupon hers herself hi him himself his hither hopefully how howbeit however i i'd i'll i'm i've ie if ignored immediate in inasmuch inc indeed indicate indicated indicates inner insofar instead into inward is isn't it it'd it'll it's its itself j just k keep keeps kept know knows known l last lately later latter latterly least less lest let let's like liked likely little look looking looks ltd m mainly many may maybe me mean meanwhile merely might more moreover most mostly much must my myself n name namely nd near nearly necessary need needs neither never nevertheless new next nine no nobody non none noone nor normally not nothing novel now nowhere o obviously of off often oh ok okay old on once one ones only onto or other others otherwise ought our ours ourselves out outside over overall own p particular particularly per perhaps placed please plus possible presumably probably provides q que quite qv r rather rd re really reasonably regarding regardless regards relatively respectively right s said same saw say saying says second secondly see seeing seem seemed seeming seems seen self selves sensible sent serious seriously seven several shall she should shouldn't since six so some somebody somehow someone something sometime sometimes somewhat somewhere soon sorry specified specify specifying still sub such sup sure t t's take taken tell tends th than thank thanks thanx that that's thats the their theirs them themselves then thence there there's thereafter thereby therefore therein theres thereupon these they they'd they'll they're they've think third this thorough thoroughly those though three through throughout thru thus to together too took toward towards tried tries truly try trying twice two u un under unfortunately unless unlikely until unto up upon us use used useful uses using usually uucp v value various very via viz vs w want wants was wasn't way we we'd we'll we're we've welcome well went were weren't what what's whatever when whence whenever where where's whereafter whereas whereby wherein whereupon wherever whether which while whither who who's whoever whole whom whose why will willing wish with within without won't wonder would would wouldn't x y yes yet you you'd you'll you're you've your yours yourself yourselves z zero
Elastic/Elasticsearch 2013. 1. 18. 12:30
그냥 쉽게 가려고 고민하지 않고 L4 신청했는데 오판 이였습니다. elasticsearch 에서 L4 에서 보내는 syn signal 에 rst 을 던지고 있습니다. 그렇다 보니 binding 이 정상적으로 되지 않고 VIP 로 접속 시 접속이 되지 않는 문제가 있는데요. 요건 검색해 보시면 명쾌한 답이 나옵니다. ES 를 직접 개발한 사람이 그러더군요. "There is no need load balancer in elasticsearch." 이유 인 즉, Java API 를 사용하면 Perfect!! 라고 합니다. 저도 살짝 놓친 부분인데요. (알고 있어도 고민하지 않으면.. 이렇다니까요 ㅡ.ㅡ;;) client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(host, port)); 여기서 search 용 node 를 추가해 주면 됩니다. 어떻게??? 이렇게요.. client = new TransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(host1, port)) .addTransportAddress(new InetSocketTransportAddress(host2, port)); 혹시라도 L4 랑 붙혀서 사용하려고 고민하시는 분들을 위해서 그냥 올려 봅니다. ;;
Elastic/Elasticsearch 2013. 1. 16. 14:54
그냥 예제 입니다. ㅎㅎ 생성 시 적용된 내용은 - replica 설정 - shards 설정 - refresh interval 설정 - term index interval 설정 - field store 시 compression 설정 - analyzer 설정 - synonym 설정 - routing 설정 - _all disable(?) 설정 # index 삭제 curl -XDELETE 'http://localhost:9200/index0/'
# index 생성 curl -XPUT 'http://localhost:9200/index0' -d '{ "settings" : { "number_of_shards" : 50, "number_of_replicas" : 1, "index" : { "refresh_interval" : "60s", "term_index_interval" : "1", "store" : { "compress" : { "stored" : true, "tv" : true } }, "analysis" : { "analyzer" : { "kr_analyzer" : { "type" : "custom", "tokenizer" : "kr_tokenizer", "filter" : ["trim", "kr_filter", "kr_synonym"] }, "kr_analyzer" : { "type" : "custom", "tokenizer" : "kr_tokenizer", "filter" : ["trim", "kr_filter", "kr_synonym"] } }, "filter" : { "kr_synonym" : { "type" : "synonym", "synonyms_path" : "analysis/synonym.txt" } } } }, "routing" : { "required" : true, "path" : "indexType.user_uniq_id" } }, "mappings" : { "indexType" : { "properties" : { "docid" : { "type" : "string", "store" : "yes", "index" : "not_analyzed", "include_in_all" : false }, "rm_seq" : { "type" : "long", "store" : "yes", "index" : "no", "include_in_all" : false }, "rm_join_seq" : { "type" : "long", "store" : "yes", "index" : "no", "include_in_all" : false }, "rm_title" : { "type" : "string", "store" : "yes", "index" : "analyzed", "term_vector" : "yes", "analyzer" : "kr_analyzer", "include_in_all" : false }, "user_uniq_id" : { "type" : "string", "store" : "yes", "index" : "not_analyzed", "include_in_all" : false }, "mb_nm" : { "type" : "string", "store" : "yes", "index" : "analyzed", "term_vector" : "yes", "analyzer" : "kr_analyzer", "include_in_all" : false }, "mb_count" : { "type" : "integer", "store" : "yes", "index" : "no", "include_in_all" : false }, "rm_ymdt" : { "type" : "date", "format" : "yyyyMMddHHmmss", "store" : "yes", "index" : "not_analyzed", "include_in_all" : false }, "data_size" : { "type" : "long", "store" : "yes", "index" : "no", "include_in_all" : false }, "msgs" : { "properties" : { "msg_seq" : { "type" : "long", "store" : "no", "index" : "no", "include_in_all" : false }, "msg" : { "type" : "string", "store" : "yes", "index" : "analyzed", "term_vector" : "yes", "analyzer" : "kr_analyzer", "include_in_all" : false }, "send_user_uniq_id" : { "type" : "string", "store" : "yes", "index" : "not_analyzed", "include_in_all" : false }, "send_user_nick_nm" : { "type" : "string", "store" : "yes", "index" : "not_analyzed", "term_vector" : "yes", "analyzer" : "kr_analyzer", "include_in_all" : false }, "recv_ymdt" : { "type" : "date", "format" : "yyyyMMddHHmmss", "store" : "yes", "index" : "not_analyzed", "include_in_all" : false }, "cfn_yn" : { "type" : "string", "store" : "no", "index" : "no", "include_in_all" : false }, "send_yn" : { "type" : "string", "store" : "yes", "index" : "not_analyzed", "include_in_all" : false }, "msg_type" : { "type" : "integer", "store" : "yes", "index" : "not_analyzed", "include_in_all" : false } } } } } } }'
Elastic/Elasticsearch 2013. 1. 16. 13:20
원문 : http://www.elasticsearch.org/tutorials/2012/05/19/elasticsearch-for-logging.html 번역 : http://socurites.com/122 http://www.elasticsearch.org/guide/reference/api/admin-indices-templates.html http://www.elasticsearch.org/guide/reference/mapping/source-field.html http://www.elasticsearch.org/guide/reference/mapping/all-field.html http://www.elasticsearch.org/guide/reference/query-dsl/ http://www.elasticsearch.org/guide/reference/api/bulk.html
아무래도 이상해서 더 찾아 봤습니다. ㅋㅋ http://www.elasticsearch.org/guide/reference/index-modules/store.html 이 문서를 보면 일단 _all 과 _source 는 reserved keyword 같구요. (소스 보기 귀찮아서 상상만.. ) 문서 보고 store 옵션을 줘서 처리 했습니다. 결과는 ㅎㅎ 성공 ^^ "settings" : { "number_of_shards" : 50, "number_of_replicas" : 1, "index" : { "refresh_interval" : "1s", "term_index_interval" : "1", "store" : { "compress" : { "stored" : true, "tv" : true } } }, "mappings" : { "type명" : { "properties" : { "docid" : { "type" : "string", "store" : "yes", "index" : "not_analyzed", "include_in_all" : false }, "seq" : { "type" : "long", "store" : "yes", "index" : "no", "include_in_all" : false } } } } } 그리고 _all 에 대해서는 보시는 것 처럼 include_in_all : false 를 해서 _all 로는 어떤것도 매칭이 되지 않습니다. 이건 젤 위 문서에서 all-field.html 보시면 되겠습니다. 참고하시라고 압축율은 무려 80% 나 되내요.. ㅎㅎ
위 링크들 보고 열심히 튜닝 중이긴 한데.. 이게 효과가 있는건지 없는건지 알수가 없내요.. ㅡ.ㅡ;; (_all, all, _source, source 이건 setting 할때 둘다 적용 되더라구요.) "all" : { "enabled" : false }, "source" : { "enabled" : true, } 용도에 따라 disk 용량을 효율적으로 사용하기 위해서 위와 같은 구성을 했는데.. 흠.. 일단 용량은 조금 줄었는데.. 좀 큰 사이즈로 한번 돌려봐야 겠내요. 데이터 건수가 적은 걸로 돌렸을 때 옵션 안주고 돌리면 - 447MB 옵션주고 돌리면 - 438MB 9MB 절약 되었습니다. ^^;
Elastic/Elasticsearch 2013. 1. 15. 23:48
역쉬 쉬운게 없군요.. 드뎌 elasticsearch 랑 kr analyzer 랑 문제를 해결했습니다.
제가 es 의 clustering 구성을 master node 를 두개로 구성했습니다. 그리고 색인 시 20개의 thread 를 생성해서 색인 데이터를 request 했구요. 물론 master node 한대를 target 으로 하고 request 했지요.
근데 es 내부에서 자동으로 master 끼리 분산 처리를 하더군요.
첨에는 소스 보기 귀찮아서 환경이랑 설정만 가지고 삽질을 했는데.. 도저희 해결이 안되서 소스를 직접 수정해서 디버깅을 하기 시작 했습니다.
짜잔.. ^^ 해결책은 비교적 쉬운 곳에 있었습니다.
master node 를 하나만 사용하거나 thread safe 하도록 kr analyzer 소스를 조금 손봐주는 것입니다.
결론만 보면 정말 쉬운데요.. ㅋ 그 과정이 참 오래 걸렸내요.. 그래도 뭐 빨리 찾았다고 생각 합니다.. ㅎㅎ
이상 es 운영 경험 공유를 맞칩니다. ^^
[해결방법1] <- 이건 근본해결책도 아니고 그냥 쓰레기 입니다. 그리고 data node 설정도 틀렸내요. - 서버 1 : node.master: true, node.data: true - 서버 2 : node.master: false, node.data: true 아마도 - 서버 1 : node.master: true, node.data: false - 서버 2 : node.master: false, node.data: true -> 다른 분이 테스트 해보시고 안된다고 그러시내요 ^^;
[해결방법2] - SyllableUtil.java 에서 getSyllableFeature() 이 함수 내 FileUtil.readlines 를 threadsafe 하게 수정 - 저는 synchronized(lock) 으로 처리 했습니다.
Elastic/Elasticsearch 2013. 1. 14. 11:02
아래 내용이 잘못 되어서 정정 합니다. ㅡ.ㅡ;; kr_filter 부분에서 오류가 발생을 하는 것은 맞습니다. 다만, 해결책이 현재 클리어 하지 않은 상황이라 일단 적용한 스키마 코드랑 문제에 대한 차선책을 공유 합니다. kr_filter 를 ngram 으로 변경했으나 이것도 최선은 아닙니다. [문제가 된 스키마] "index" : { "analysis" : { "analyzer" : { "kr_analyzer" : { "type" : "custom", "tokenizer" : "kr_tokenizer", "filter" : ["trim", "kr_filter", "kr_synonym"] }, "kr_analyzer" : { "type" : "custom", "tokenizer" : "kr_tokenizer", "filter" : ["trim", "kr_filter", "kr_synonym"] } }, "filter" : { "kr_synonym" : { "type" : "synonym", "synonyms_path" : "analysis/synonym.txt" } } } } [차선책] "index" : { "analysis" : { "analyzer" : { "kr_analyzer" : { "type" : "custom", "tokenizer" : "kr_tokenizer", "filter" : ["trim", "ngram", "kr_synonym"] }, "kr_analyzer" : { "type" : "custom", "tokenizer" : "kr_tokenizer", "filter" : ["trim", "ngram", "kr_synonym"] } }, "filter" : { "kr_synonym" : { "type" : "synonym", "synonyms_path" : "analysis/synonym.txt" }, "ngram" : { "type" : "ngram", "min_gram" : 2, "max_gram" : 8 } } } }
운영을 하면서 발생한 이슈를 공유 합니다. elasticsearch 0.19.12 + elasticsearch-analysis-korean-1.1.0 + jdk1.6.0 32 ▷ 이 구성에서 JDK 버전으로 인해 분석기에서 오류가 발생 합니다. ▷ 오류 내용은 analysis 세팅 시 filter 부분에 trim 과 kr_filter 적용을 해야 합니다. ▷ 근데 이 두 filter 에서 색인 시 오류가 납니다. ▷ 해결책은 일단 개발 환경과 동일하게 JDK 버전을 낮춰서 해결을 했습니다.
사용 시 참고하세요. 그리고 elasticsearch-analysis-korean 이넘은 elasticsearch 0.19.9 로 빌드 되어 있어서 0.2x 버전이랑 함께 사용할 경우 오류가 납니다. 참고하세요.
Elastic/Elasticsearch 2013. 1. 9. 12:02
기본적으로 /_plugin/head 에서 structured query 를 만들수 있지만 좀 더 다양한 옵션을 주고 싶을 경우 추가 구성을 해야 합니다. elasticsearch.org 문서만 가지고 만들다 보면 처음 접하시는 분들은 어떻게 시작할지 막막할 수 있죠. 그래서 제가 테스트 했던 것들 올려 봅니다.
[기본쿼리] http://localhost:9200/jjeong0/_search?q=msg:채팅&pretty=true - msg 라는 field 에 대해서 검색 수행 http://localhost:9200/jjeong0/_search?q=msg:안녕 OR title:안녕하세요&sort=cre_ymdt:desc&from=0&size=10&pretty=true - msg 와 title field 에 대해서 OR 검색을 수행
[JSON String Type] [Paging+term 기반 쿼리] http://localhost:9200/jjeong0/_search?source={"from":0,"size":10,"query":{"term":{"msg":"안녕하세요"}}}&pretty=true - msg 라는 field 에 대해서 term 기반으로 검색 수행 - from 은 시작 offset 값이며, size 는 한 번에 fetch 해올 문서 크기 [Sorting + term 기반 쿼리] http://localhost:9200/jjeong0/_search?source={"query":{"bool":{"must":[{"term":{"msg":"안녕"}}],"must_not":[],"should":[]}},"from":0,"size":50,"sort":[{"cre_ymdt":"asc"}],"facets":{}}&pretty=true - msg 에 반드시 "안녕" 이라는 단어가 포함이 된 것만 검색 - cre_ymdt 값에 대한 ascending sorting - http://www.elasticsearch.org/guide/reference/api/search/sort.html [Range Search] http://localhost:9200/jjeong0/_search?source={"query":{"range":{"recv_ymdt":{"from":"20120820163946", "to":"20120911160444"}}}}&pretty=true - recv_ymdt 라는 값에 대해서 범위를 지정하고 검색 - http://www.elasticsearch.org/guide/reference/query-dsl/range-query.html [Query String Search] http://localhost:9200/jjeong0/_search?source={"query":{"bool":{"must":[{"query_string":{"default_field":"msg","query":"%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94"}}],"must_not":[],"should":[]}},"from":0,"size":50,"sort":[{"cre_ymdt":"desc"}],"facets":{}}&pretty=true - http://www.elasticsearch.org/guide/reference/query-dsl/query-string-query.html [Highlight Search] http://localhost:9200/jjeong0/_search?source={"query":{"bool":{"must":[{"query_string":{"default_field":"msg","query":"안녕 하세요"}}],"must_not":[],"should":[]}},"from":0,"size":50,"sort":[{"cre_ymdt":"desc"}],"facets":{},"highlight":{"pre_tags":["<b>"],"post_tags":["</b>"],"fields":{"msg":{}}}}&pretty=true - http://www.elasticsearch.org/guide/reference/api/search/highlighting.html [Term+QueryString+Range+Highlight, Sort, Paging, Routing] http://localhost:9200/jjeong0/_search?source={"from":0,"size":20,"query":{"bool":{"must":[{"term":{"user_uniq_id":"jjeong.tistory.com"}},{"query_string" : {"default_operator" : "OR","fields" : ["msg", "title"],"query" : "안먹어"}},{"range":{"rm_ymdt":{"from":"20121209000000","to":"20130110000000","include_lower":true,"include_upper":true}}}]}},"highlight":{"pre_tags":["<b>"],"post_tags":["</b>"],"fields":{"msg":{},"title":{}}},"sort":[{"cre_ymdt":{"order":"desc"}}]}&routing=jjeong.tistory.com&pretty=true - http://www.elasticsearch.org/guide/reference/mapping/routing-field.html
|