구문 분석 -analysis

 

구문 분석 -analysis

 

해결 -analysis

그것은 단어로 이해 될 수있다.

리졸버는 내장 및 사용자 정의 두 종류를 포함하여, 파서 --analyzer에 의해 수행 구문 분석.

 

1.1 파서

1.1.1. 내장 파서

문서 : https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html

표준 분석 : 경계를 무너 뜨리는 단어, 대부분의 문장은 중지 단어의 제거를 지원, 소문자 단어를 무시됩니다.

간단한 분석 : 단어 포인트 알파벳이 아닌 문자는 소문자로 편지를 포맷.

공백 분석기 :하지 실행 소문자의 공백 문자 분할 포인트.

분석 중지 : 간단한 분석기와 비슷한,하지만 중지 단어의 제거를 지원했다.

패턴 분석 : 일반 분석 단어

언어 분석기 : 다른 언어로 단어

지문 분석기 :

지문 분석기는 중복 검색에 사용할 수있는 지문을 생성하는 전문가의 분석이다.

 

1.1.2. 사용자 정의 파서

일시적으로 참여.

 

1.2. 색인 단어 / 단어 검색

인덱스 잘 이해 워드 인덱스를 형성하는 단어 분할 쓰기된다.

각 텍스트 필드는 고유 분석기를 지정합니다;

지정되지 않은 경우, 인덱스 설정으로 기본 / 기본 매개 변수는 기본적으로 표준 분석기를 우선.

 

검색 단어

검색 문의 경우, 단어는 표제어 기본 파서를 사용하여 수행됩니다;

검색 단어는 독립적으로 단어의 설정 될 수 있지만, 일반적으로 필요가 없습니다.

 

1.2.1. 분할 예

예를 들어 내장 영어 파서 :

"빠른 갈색 여우가 게으른 개를 뛰어 넘었다!"

첫째 소문자의 정지 단어, 고주파있는 단어 프로토 타입에 단어를 변환 제거, 최종 결과는 순서는 다음과 같습니다

[빠른, 갈색, 여우, 점프, 오버, lazi, 개]

 

 

2. 케이스

환경 구성 :

인덱스 test_i 만들기

기본 구성을, 필드 MSG 만들기 사용, 즉, 표준 토크 나이

, 필드 msg_english 만들기 영어 단어 분리기를 사용;

 

# 테스트 환경 만들기

D = { "MSG": "사과를 먹는 하루는 의사를 멀리 유지합니다."}

RV = es.index ( "test_i"d)

Q. RW ()

D = { "속성"{

      "msg_english": {

        "유형": "텍스트",

        "분석기": "영어"

    }}}

RV = es.indices.put_mapping (본체 = D, 인덱스 = "test_i은"]) # 일반적 true를 반환

 

#보기 데이터 구조

RV = es.indices.get_mapping (INDEX_NAME)

{

 "test_i": {

  "매핑": {

   "속성": {

    "MSG": {

     "유형": "텍스트",

     "필드": {

      "키워드": {

       "유형": "키워드"

       "ignore_above": 256

      }}}

    "msg_english": {

     "유형": "텍스트",

     "분석기": "영어"

    }}}}}

 

문서에 :

D는 = { "msg_english는": "하루에 사과를 먹는 것은 멀리 의사를 유지합니다."}

RV = es.index ( "test_i"d)

 

쿼리 : 쿼리는 두 부분으로, 필드 MSG에 의해 첫 경기 먹고, 아니 안타 항목, 쿼리 msg_english 필드로 나누어 져 있습니다

# 검색 API를

데프 search_api_test () :

    데이터 = { "쿼리": { "일치": { "msg_english을": "먹는"}}}

    RV = es.search (인덱스 = "test_i」= 본체 데이터)

    Q. RW ()

search_api_test ()

 

결과

{ "했다": 2,

 "TIMED_OUT"거짓,

 "_shards": {

  "총": 1,

  "성공": 1,

  "생략": 0,

  "실패": 0

 },

 "히트": {

  "총": {

   "값"1

   "관계": "EQ"

  },

  "MAX_SCORE": 0.2876821,

  "히트"[

   {

    "_index": "test_i"

    "_type": "_doc"

    "_id": "XG7KFG0BpAsDZnvvGLz2"

    "_score": 0.2876821,

    "_source": {

     "msg_english": "하루에 멀리 의사를 계속 사과를 먹고."

    }}]}}

 

단어 시험, 육안 검사 표준 단어와 영어 단어의 차이 : 보충

테스트 코드 :

    # 분사 테스트

D1 = { "분석기": "표준", "텍스트": ". 하루에 멀리 의사를 계속 사과를 먹는"}

D2 = { "분석기": "영어", "텍스트" ". 하루에 멀리 의사를 계속 사과를 먹는"}

RV1 = es.indices.analyze (본체 = D1의 포맷 = "텍스트")

RV2 = es.indices.analyze (본체 = D2를 포맷 = "텍스트")

인쇄 ([X RV1에 대한 X] [ "토큰"[ "토큰"]) # (D1)의 분할 결과

인쇄 ([X RV2에 대한 X] [ "토큰"[ "토큰"]) # (D2)의 분할 결과

출력 :

[ '멀리', '이', '사과', 'A', '일', '유지', '의사' '먹고']

[ 'awai', 'APPL', '다이가', '유지', '의사' '먹고']

 

추천

출처www.cnblogs.com/wodeboke-y/p/11562809.html