중화사전망 - 서예자전 - Elasticsearch 의 단어 분할 인덱스 정보를 읽는 방법

Elasticsearch 의 단어 분할 인덱스 정보를 읽는 방법

첫째, 플러그인 준비

온라인 소개는 plugin-install medcl/elastic search-analysis-ik 를 직접 사용할 수 있다는 방법을 소개하지만, 내가 달성한 효과는 플러그인의 소스 코드만 다운로드했을 뿐, elastic search 는 이를 _site 플러그인으로만 취급합니다.

따라서 maven 을 실행하여 패키지화된 jar 파일을 상위 디렉토리에 복사해야 합니다. 그렇지 않으면 매핑된 분석기를 정의할 때 클래스를 찾을 수 없다는 메시지가 표시됩니다. ).

IK 는 사전 기반 분사이기 때문에 IK 의 사전 파일을 다운로드해야 합니다. medcl 의 elasticsearch-RTF 에 있습니다. 이 주소에서 다운로드할 수 있습니다.

/downloads/medcl/elastic search-analysis-ik/ik.zip

다운로드 후 config 디렉토리에 압축을 풉니다. 이 시점에서 다음 정의된 분리자가 즉시 적용되도록 elasticsearch 를 다시 시작해야 할 수 있습니다.

둘째, 단어 세분화의 정의

분사 플러그인이 준비되면 elasticsearch 에서 이 분사 유형을 정의 (선언) 할 수 있습니다 (standred 와 같은 자체 유형은 특별히 정의할 필요가 없음). 다른 설정과 마찬가지로 분사의 정의는 시스템 레벨 (elasticsearch 전역 범위) 또는 인덱스 레벨 (현재 인덱스 내에서만 표시됨) 일 수 있습니다. 물론 시스템 레벨 정의는 conf 아래의 디렉토리를 나타냅니다.

Elasticsearch.yml 파일에 정의되어 있으며 내용은 대략 다음과 같습니다.

색인:

분석:

분석기:

IkAnalyzer:

별칭: [ik]

유형: org.elasticsearch.index.analysis.ikanalyzerprovider

또는 index.analysis.analyzer.ik.type: "ik"

개인적인 취향 때문에, 나는 이렇게 하지 않고, 중국어 분사가 필요한 색인에서 정의함으로써, 이렇게 하면 더 유연하며, 다른 색인에는 영향을 주지 않는다.

분석을 정의하기 전에 색인을 끕니다. 실제로 효과를 내기 위해 닫을 필요는 없지만 데이터의 일관성을 위해 먼저 종료해야 합니다. (온라인 시스템인 경우 두 번 생각하십시오)

Curl-xpost/medcl/elasticsearch-analysis-ik, 분사기 소스 코드를 다운로드한 다음 다운로드 디렉토리로 들어가 명령 실행: mvn clean package, 패키지 생성 elastic search 이러한 디렉토리가 없으면 먼저 만듭니다.

2, ik 디렉토리 복제

다운로드 디렉토리에서 ES_HOME/config 디렉토리로 ik 디렉토리를 복사합니다.

3, 단어 분할 시스템 구성

Es _ home/config/elasticsearch.yml 파일을 열고 파일 끝에 다음을 추가합니다.

색인:

분석:

분석기:

Ik:

별칭: [ik_analyzer]

유형: org.elasticsearch.index.analysis.ikanalyzerprovider

Ik_max_word:

유형: ik

Use_smart: false

Ik_smart:

유형: ik

Use_smart: true

또는

Index.analysis.analyzer.default.type: ik

좋아! 플러그인 설치가 완료되었습니다. ES 를 다시 시작하고 ik 분사 효과를 테스트하십시오!

셋. Ik 분사 테스트

1. index 라는 색인을 작성합니다.

Curl-xput http://localhost: 9200/index

2. 색인 색인에 대한 맵핑을 생성합니다.

Curl-xpost http://localhost: 9200/index/fulltext/_ mapping-d'

{

전체 텍스트: {

"_all": {

분석기: ik

},

속성: {

내용: {

"유형": "문자열",

[부스트]: 8.0,

"term _ vector": "with _ positions _ offsets",

분석기: ik,

"include_in_all": 참

}

}

}

}'

3. 시험

Curl' http://localhost: 9200/index/_ analyze? 분석기 = ik & amppretty=true' -d'

{

본문: "세상이 그렇게 크다"

}'

결과는 다음과 같이 표시됩니다.

{

토큰: [{

토큰: 텍스트,

"start_offset": 4,

"end_offset": 8,

[유형]: "영어",

[위치]: 1

}, {

토큰: "세상",

"start_offset": 1 1,

"end_offset": 13,

"유형 type": "CN_WORD",

[위치]: 2

}, {

토큰: 그래서,

"start_offset": 13,

"end_offset": 15,

"유형 type": "CN_WORD",

[위치]: 3

}, {

토큰: 좋아요.

"start_offset": 15,

"end_offset": 17,

"유형 type": "CN_WORD",

[위치]: 4

}]

}