220331 Cearch 팀 프로젝트

25tutmmu·2022년 4월 1일
0

📑 오늘 한 일

10:30 ~ 11:00 회의준비
11:00 ~ 12:00 회의
13:00 ~ 21:30 api 수정 및 개발
21:30 ~ 22:00 블로깅

엘라스틱 서치

멘토와 클래스를 서치하는 검색을 만들기 위해 노력했다.

통합 유저의 형식으로 되어있어 유저중에서 role이 멘토이며 관리자가 status를 'AUTHORIZED'로 승인해준 사람만이 검색되어야한다.

//멘토 서치
 @Query(() => [SearchMento])
  async fetchHomeSearch(@Args('search') search: string) {
    const result = await this.elasticsearchService.search({
      index: 'mentor', // 테이블명
      sort: ['_score'],
      query: {
        bool: {
          should: [{ match: { name: search } }],
          must: [
            { match: { role: 'MENTOR' } },
            { match: { mentostatus: 'AUTHORIZED' } },
          ],
        },
      },
    });
    const resultarray = result.hits.hits.map((ele: any) => ({
      id: ele._source.id,
      companyName: ele._source.companyname,
      department: ele._source.department,
      name: ele._source.name,
      selfIntro: ele._source.selfintro,
    }));
    console.log(resultarray);
    if (!resultarray) throw '검색결과가 없습니다.';
    return resultarray;
  }

클래스 타이틀과 상세설명 과 멘토이름을 ngram 으로 분석된 단어들로 검색하게 함

//클래스 서치 
@Query(() => [SearchLecture])
  async fetchLectureSearch(@Args('search') search: string) {
    const result = await this.elasticsearchService.search({
      index: 'lecture', // 테이블명
      query: {
        bool: {
          should: [
            { match: { classTitle: search } },
            { match: { classDescription: search } },
            { match: { name: search } },
          ],
        },
      },
    });
    console.log(result);
    const resultarray = result.hits.hits.map((ele: any) => ({
      id: ele._source.id,
      companyName: ele._source.companyName,
      department: ele._source.department,
      name: ele._source.name,
      selfIntro: ele._source.selfIntro,
      classTitle: ele._source.classTitle,
      classDescription: ele._source.classDescription,
      rating: ele._source.rating,
    }));
    console.log(resultarray);
    if (!resultarray) throw '검색결과가 없습니다.';
    return resultarray;
  }

0개의 댓글