2E2I / mamomo-server

[2022 HSU Capstone] 기부 통합 플랫폼 MaMoMo의 백엔드 페이지 입니다.
5 stars 1 forks source link

Elasticsearch에서 텍스트마이닝 결과 기반으로 캠페인 검색 #112

Closed im-shung closed 2 years ago

im-shung commented 2 years ago

텍스트마이닝 요청

image

Kibana에서 사용한 쿼리문

GET campaigns/_search
{
  "query": {
    "query_string": {
      "query": "(아동)^4.4 OR (지역)^3.4 OR (가정)^2.9 OR (사회)^2.9 OR (센터)^2.0 OR (제공)^2.0 OR (기관)^1.5 OR (마스크)^1.5 OR (복지)^1.5 OR (서비스)^1.5 OR (서정)^1.5 OR (스쿨)^1.5 OR (학용품)^1.5",
      "fields": ["body","title^2"]
    }
  },"min_score": 30
}

Spring에서 사용한 QueryDsl

    public NativeSearchQuery createQuery(Object textMiningResultDto, Pageable pageable) {
        List<Map<String, String>> textMiningResults = ((TextMiningResultDto) textMiningResultDto).getResult();
        String query = "";
        for (Map<String, String> map : textMiningResults) {
            String keyword = map.get("keyword");
            String value = map.get("value");
            query += "(" + keyword + ")" + "^" + value + " OR ";
        }
        query = query.substring(0, query.length() - 4);
        System.out.println("query = " + query);
        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder()
                .withQuery(QueryBuilders.queryStringQuery(query).fields(fields))
                .withMinScore(MIN_SCORE)
                .withPageable(pageable);

        return queryBuilder.build();
    }

출력: query = (아동)^4.4 OR (지역)^3.4 OR (가정)^2.9 OR (사회)^2.9 OR (센터)^2.0 OR (제공)^2.0 OR (기관)^1.5 OR (마스크)^1.5 OR (복지)^1.5 OR (서비스)^1.5 OR (서정)^1.5 OR (스쿨)^1.5 OR (학용품)^1.5

im-shung commented 2 years ago

@devyuseon MinScore는 일단 30으로 했더니 총 16개가 나왔습니당

postman으로 돌려보고 이상한 거 있음 말해줘!

yuseon-lim commented 2 years ago

@im-shung 괜찮은듯!! 고생 많았슈 ✨ 텍스트마이닝 같은 경우엔 계속 찾아보다가 정확도를 높일 수 있는 방법이 있으면 추가해야겠어 클라이언트-스프링-플라스크 간 구조는 이렇게 쭉 가면 될듯! 수고했습니다~