Django 검색 구현 + 형태소 분석기 이용

2024. 2. 15. 20:22· Django/view
목차
  1. 코드
  2. 배운 점
728x90

 

코드

#키워드를 먼저 공백 제거
keywords = [q.replace(' ', '') for q in search_keyword.split(' ') if q]
for keyword in keywords.copy(): #반복 시 반복 객체를 보호하기 위해
	keywords += mecab.morphs(keyword) #형태소를 분해해서 keywords에 담아줍니다
    
    keyword_search_query = reduce(
                    operator.or_,
                    [
                        Q(content__icontains=keyword)
                        for keyword in keywords
                    ]
                )

reduce로 누적 만들기
이 예시에서는 content__icontains를 사용하여 keywords 리스트에 있는 각 키워드로 검색하는 Q 객체들을 생성하고, reduce 함수를 이용하여 이를 OR 조건으로 결합한 쿼리를 생성합니다.

최종적으로 keyword_search_query에는 OR 조건이 적용된 쿼리 객체가 저장됩니다.(Q(content__icontains='apple') | Q(content__icontains='orange') | Q(content__icontains='banana'))

sorted(list(set(keywords)), key=lambda k: (query.startswith(k), -len(k)), reverse=True)

sort를 통해서 키워드로 시작하는 것들을 앞으로 땡겨 올 수 있습니다.

 

배운 점

  1. 키워드를 전처리하는 작업과 형태소 분석을 통해 좀 더 좋은 데이터들을 얻는 방법을 배웠습니다.
  2. reduce와 operater을 통해서 or조건문을 반복문 돌리는 법을 배웠습니다.
저작자표시 비영리 (새창열림)

'Django > view' 카테고리의 다른 글

[Python] 개월 수로 필터링  (0) 2024.03.06
[Python] Excel 다운로드  (0) 2024.02.15
  1. 코드
  2. 배운 점
'Django/view' 카테고리의 다른 글
  • [Python] 개월 수로 필터링
  • [Python] Excel 다운로드
두잇 두두
두잇 두두
읽기 쉬운 코드를 짜기 위해 노력합니다. 좋은 코드는 단순하고 이해하기 쉬워야 한다고 생각합니다.
두두 DB읽기 쉬운 코드를 짜기 위해 노력합니다. 좋은 코드는 단순하고 이해하기 쉬워야 한다고 생각합니다.
두잇 두두
두두 DB
두잇 두두
전체
오늘
어제
  • 분류 전체보기 (135)
    • CS지식 (7)
    • 시스템 설계 (5)
    • 자료구조&알고리즘 (36)
      • 자료구조 (1)
      • 백준 (13)
      • 프로그래머스 (15)
      • 인프런 (2)
    • Python (9)
      • Docs (3)
      • 실험실 (2)
    • Django (36)
      • orm (10)
      • view (3)
      • model (3)
      • admin (3)
      • restframework (13)
      • error (1)
      • utils (2)
    • Java (2)
      • JPA (3)
    • AI (1)
      • AI가 쓴 글 (1)
    • Git (4)
    • Linux (1)
    • 개발자로써 (8)
      • 회고 (1)
    • 문화생활 (0)
      • 여행 (0)
    • 도서📚 (0)
      • 일반 도서 (0)
      • 개발 도서 (0)
    • 프론트 (1)
      • snippet (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
두잇 두두
Django 검색 구현 + 형태소 분석기 이용
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.