climber
42
2021-11-26 13:51:27
2
116

엘라스틱 서치 검색결과는 원래 띄어쓰기 한 것들만 반영되나요?


MySQL에 있던 데이터를 JDBC와 로그스태시를 이용해서 엘라스틱 서치에 매핑했습니다.

한글 analyzer로는 nori를 설치했습니다.


일단 영어로 예를 들어 vpn을 검색한다면

vpn이라는 글자가 꼭 띄어쓰기 되어 있어야만 결과로 반환됩니다.

'vpn 설정에 관하여' 는 출력되고 'vpn설정에 관하여'는 출력되지 않는 식으로요.


그리고 nori를 사용함에도 한글 검색결과가 올바르게 나오지 않는 것 같습니다.

무엇이 문제일까요? ㅜㅜ


const client = new Client({
    hosts: 'http://localhost:9200',
    /*auth: {
      username: 'elastic',
      password: 'changeme'
    },*/
    maxRetries: 5,
    requestTimeout: 60000,
    sniffOnStart: true
});

rs = await client.search({
                index: 'board',
                size: 50,                
                body: {
                    "query": {
                        "query_string": {
                            "query": `${key}`,
                            "analyzer": "board_nori_mixed",
                            "fields": ["srchcont", "title"]
                        }
                    }
                }
            });
0
  • 답변 2

  • ddddqqqqq
    388
    2021-11-26 14:29:43 작성 2021-11-26 14:31:06 수정됨

    인덱스 만드실때 filter, 토큰나이저 설정 하셨나요??


    애널라이저 이용해서 주어진 문자열이 어떻게 토큰화 되는지 확인하시고

    그에 맞게 필터, 토큰나이저 주고 queryDSL 보내시면 될겁니다



  • climber
    42
    2021-11-26 16:43:58


    여의도 한량이


    nori 적용 문제는 해결했는데 적용하고 나니 영어로 검색할 때 결과가 부실해졌네요

    filter를 통해서 korean일 때만 nori를 적용하도록 설정해야 하는 건가요?

  • 로그인을 하시면 답변을 등록할 수 있습니다.