[ElasticSearch] 정확한 값과 전체 텍스트

Elasticsearch의 데이터는 크게 두 가지 유형으로 나눌 수 있는데 그것이 바로 정확한 값과 전문 텍스트이다.

1. 정확한 값(Exact values)


정확한 값은 그것의 이름과 같이 정확하다.예를 들어 날짜나 사용자 ID, 예를 들어 사용자 이름이나 메일 주소 등 정확한 문자열을 포함할 수 있다.정확한 값 "Foo"는 정확한 값 "foo"와 다릅니다.마찬가지로 정확치 2014와 정확치 2014-09-15도 다르다.

2. 전체 텍스트 (Full text)


전문 텍스트, 다시 말하면 텍스트화된 데이터(인간의 언어로 자주 쓰임), 예를 들어 트위터 글이나 메일 본문 등이다.
비고
전문 텍스트는 흔히 비구조화된 데이터라고 불리지만 사실은 단어를 부적절하게 사용하는 칭호이고 실제 자연 언어는 고도로 구조화된 것이다.문제는 자연 언어의 문법 규칙이 이렇게 복잡해서 컴퓨터가 정확하게 해석하기 어렵다는 것이다.예:
May is fun but June bores me. 도대체 월이야, 사람이야?

3. 대비


정확한 값은 비교적 조회하기 쉽다.두 개의 결과가 일치하거나 일치하지 않기 때문이다.이러한 쿼리는 SQL로 쉽게 표현할 수 있습니다.
WHERE name    = "John Smith"
  AND user_id = 2
  AND date    > "2014-09-15"

전체 텍스트 데이터를 조회하는 데는 미묘하다.우리는 이 문서가 조회 요구를 충족시키는지 물어볼 뿐만 아니라, 이 문서와 조회의 일치 정도가 어떠한지 물어볼 것이다.다시 말하면 이 문서와 조회 조건의 관련도는 얼마나 높습니까?
우리는 전체 텍스트와 정확하게 일치하는 일이 매우 적다.반대로, 우리는 전체 텍스트에 검색 텍스트를 포함하는 부분을 조회할 것이다.뿐만 아니라 우리는 검색엔진이 우리의 의도를 이해할 수 있기를 기대한다.
  • "UK"를 조회하는 경우 "United Kingdom"관련 문서를 반환할 수 있기를 희망합니다..
  • "jump"를 조회하는 동시에 "jumped", "jumps", "jumping"심지어 "leap"와 일치하는 문서를 되돌려주기를 원합니다..
  • "johnny walker"를 조회하면 "Johnnie Walker"와 일치하는 문서를 되돌려 받을 수 있기를 희망합니다..
  • 만약에 "fox news hunting"을 조회하고 hunting on Fox News에 관한 이야기, "fox hunting news"를 조회하면 fox hunting에 관한 뉴스 이야기도 되돌릴 수 있기를 희망합니다..

  • 전체 텍스트 필드에서 이러한 유형의 검색을 편리하게 하기 위해서, Elasticsearch는 먼저 텍스트 분석 (analyzes) 을 한 다음, 결과를 사용하여 역렬 인덱스를 만듭니다.
    참조:https://www.elastic.co/guide/en/elasticsearch/guide/current/_exact_values_versus_full_text.html

    좋은 웹페이지 즐겨찾기