안녕하세요, 웹쪽을 처음 공부하면서 엘라스틱서치를 사용하게 되었는데,
nodejs로 분석기 설정과 맵핑까지 해서 데이터를 저장하는 것까지 성공하였습니다.
제가 하고싶은 일은 현재 저장되어있는 문서에서 한글과 영어 단어를 추출해 내는 것입니다.
그래서 원하는 정보를 검색하고, 결과로 나온 문서의 내용을 은전한닢으로 형태소 분석을 했지만
snowball같이 기본적으로? 지원되는 분석기가 아닌 분석기는 안되더라구요...
지금 같이 프로젝트를 진행하는 팀원이 서버를 노드로 사용하자고 해서...노드에서 어떻게 사용하는 지
구글에 열심히 검색해봐도 딱히 나오지가 않네요 ㅠㅠㅠ
아래는 대략적인 nodejs코드이고, 그 아래는 분석기 설정과 매핑 입니다...
답변 미리 감사드립니다 !
=====================================================================
var http = require('http');
var elastic = require('elasticsearch');
data = client.search({
index: 'notebooks',
type: 'note',
body: {
query: {
match: {
content: '아버지'
}
}
}
}).then(function(resp) {
var hits = resp.hits.hits;
for(var i=0; i<hits.length; i++) {
console.log(urlencode.decode(hits[i]["_source"]["content"]));
analy = client.indices.analyze({
text: urlencode.decode(hits[i]["_source"]["content"]),
analyzer: 'snowball'
/*analyzer: {
type: 'custom',
tokenizer: 'seunjeon_default_tokenizer'
}*/
///////////////////////
//body: urlencode.decode(hits[i]["_source"]["content"]),
//tokenizer: 'seunjeon_default_tokenizer'
}, function(err, reps) {
console.log(reps);
});
}
}, function(err) {
console.trace(err.message);
});
==============================================================
"settings" : {
"index":{
"analysis":{
"analyzer":{
"korean":{
"type":"custom",
"tokenizer": "seunjeon_default_tokenizer"
}
},
"tokenizer" : {
"seunjeon_default_tokenizer": {
"type": "seunjeon_tokenizer",
"user_words": ["낄끼빠빠,-100", "버카충", "abc마트"]
}
}
}
}
},
"mappings": {
"note" : {
"properties" : {
"title" : { "type" : "string" , "analyzer": "korean" },
"id" : { "type" : "string" },
"content" : { "type" : "string", "analyzer": "korean" },
"data" : { "type" : "date" },
"tag" : { "type" : "string" }
}
}
}
}'
=======================================================================