작성
·
66
·
수정됨
0
58 강에서 자동완성 기능은 잘 적용되나 동의어처리가 안 됩니다
강의에 나온대로 elasticsearch와
spring boot 의json파일에서
동의어처리와 자동 완성 처리를
설정하고
엘지 건조기
엘지 휴대폰
LG 에어컨
엘지 청소기
LG 공기 청정기
엘지 식기세척기
라고 POST 한 후에
GET /products7/_search { "query":{ "multi_match":{ "query":"엘지", "type":"bool_prefix", "fields":[ "name.auto_complete", "name.auto_complete._2gram", "name.auto_complete._3gram" ] } }, "size":5 }
이렇게 검색하면
LG 에어컨
LG 공기 청정기
는 조회가 안 됩니다
GET /products7/_search { "query":{ "multi_match":{ "query":"LG", "type":"bool_prefix", "fields":[ "name.auto_complete", "name.auto_complete._2gram", "name.auto_complete._3gram" ] } }, "size":5 }
이렇게 검색하면
LG 에어컨
LG 공기 청정기
만 조회 됩니다
그리고, Spring Boot 를 사용하는 강의는 17, 18 강에서 하시고 kibana 에서 실습하다가 60강에서 다시 Spring Boot 에 적용하는 강의가 진행되는데, 18 강에서 없던 ProductService 가 이미 작성되어서 나옵니다.
ProductController
ProductRepository
도 그러네요...
혹시 중간에 있었는데 제가 놓친 건가요?....
답변 4
0
안녕하세요
synonyms 설정에 "lg, 엘지" 항목을 추가하고 했었는데 안 됐었습니다.
한 두 시간 있다가 다시 하니까 되네요...
스프링 프로젝트가 처음 시작할 때
뭔가 꼬였었던건지.... 이상하네요.
이런 경우도 있나 하고 생각하게 됩니다....
0
안녕하세요 Stevens님 ~ 디버깅 도와드려볼게요 :)
"자동완성 기능은 잘 적용되나 동의어처리가 안 됩니다"
-> 세팅 파일 수정없이 그대로 사용하셔서 실습과 다른 입력값의 요청에서 응답이 잘못 나온것 같네요 ~ synonyms 설정에 "lg, 엘지" 항목이 없기 때문에 "엘지"를 검색해도 "LG"로 저장된 문서는 검색되지 않았어요 !
자동완성 필드인 name.auto_complete, 2gram, 3gram은 analyzer: "nori"만 적용되었고, roduct_synonyms 필터가 전혀 적용되지 않아서 문제가 발생 한거죠 :)
"혹시 중간에 있었는데 제가 놓친 건가요?…"
-> 네 맞습니다 ! 52강에 새로운 Spring Boot 프로젝트를 클론 받아 진행하는 내용이 있으니 참고하시면 좋을 것 같습니다 :D
혹시라도 추가로 궁금한 점이 있으시면 언제든 편하게 질문 주세요 ~~😊
0
안녕하세요 Stevens님!
제가 질문해주신 내용을 답변 드리기 위해
환경을 셋팅하고 테스트 중에 있습니다!
그런데 중간중간에 외부 일정이 끼어있다보니
아직까지 확실한 답변이 준비되지 않았네요..!!
조금만 더 기다려주시면 제가 오늘이나 내일 중으로 꼭 답변 남겨놓겠습니다:D
0
안녕하세요, 인프런 AI 인턴입니다. Stevens님.
Elasticsearch의 동의어 처리 문제에 대해 고민이 많으신 것 같습니다. 내용에 따르면 쿼리에서 동의어 처리가 일부 누락되는 문제를 겪고 계신 듯합니다. 동의어 필터가 올바르게 적용되지 않는 경우, 몇 가지 사항을 점검해 보셔야 합니다.
동의어 설정 확인: 우선, Elasticsearch의 분석기(analyzer) 설정에서 동의어 필터가 제대로 설정되어 있는지 확인하십시오. 동의어 파일이 올바른 형식으로 작성되었는지, 서버가 해당 파일에 접근할 수 있는지 점검하시기 바랍니다.
인덱스 매핑 및 설정: 해당 인덱스의 매핑과 설정에서 동의어 필터가 적용되고 있는지, 그 적용 여부가 검색 필드에 반영되어 있는지를 확인하십시오. 필요한 경우 적절한 synonym
필터를 분석기에 추가해야 합니다.
쿼리 분석기 설정: 동의어 처리가 검색 시에 반영되려면 query
측에서도 적절한 분석기가 사용되어야 합니다. 이를 위해 search_analyzer
를 설정하는 방법을 고려할 수 있습니다.
Elasticsearch 재배포: 변경된 설정이 반영되려면 인덱스가 재배포되었는지 확인해야 합니다. 설정을 수정한 후 인덱스를 close
했다가 open
하거나, 인덱스를 삭제 후 다시 생성하여 변경 사항을 반영할 수 있습니다.
https://www.inflearn.com/questions/1618443 스프링부트에서 엘라스틱 인덱스 설정(동의어 필터 적용 에러): 동의어 필터 설정에서 발생할 수 있는 문제와 해결 방안에 대한 구체적인 설명이 포함되어 있습니다.
https://www.inflearn.com/questions/1606609 must_not 쿼리는 term 쿼리만 사용 가능한가요?: Elasticsearch의 다양한 쿼리 적용 사례와 관련 설정에서 발생 가능한 문제를 다룹니다.
위의 조언을 통해 해결의 실마리를 찾으시길 바랍니다. 추가 궁금점이 있으시면 언제든 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요 Stevens님 ~
스프링 프로젝트와 Elasticsearch를 같이 사용하시다보면 이런 경우가 꽤나 자주 발생해요 ~
대표적으로 "인덱스 재생성 또는 리로드 누락"이 있어요 !
원하는 결과값을 위해 설정 값을 수정하는 과정에 너무 몰입한 나머지
기존 인덱스를 정리하지 않은 경우가 꽤나 있죠 :)
또한 Spring 프로젝트 및 IDE의 캐시로 인해 변경된 인덱스 세팅을 인식을 못할 수도 있어요 !
이런 경우는 Elasticsearch에만 국한되지 않고 많은 다른 프로젝트 및 라이브러리 설정 변경시에도 발생해요 ~
"인덱스 재생성 또는 리로드 누락" 보다는 스프링 프로젝트 및 IDE를 다룸에 있어 이러한 경우가 더욱 자주 발생해요 !!
혹시라도 추가로 궁금한 점이 있으시면 언제든 편하게 질문 주세요 ~~😊