반응형
1. 개요
- 검색할 데이터가 너무 많으면 검색하기 어려움
- indexing이 되어있는 데이터에는 binary search 개념을 도입할 수 있음
- binary search는 이진탐색인데 검색할 데이터가 정렬되어있어야 함
- indexing은 데이터를 정렬하는 행위
- 몽고DB에서는 오름차순으로 정렬되어 있는 _id를 이용해서 검색하면 binary search 가능
- mongoDB atlas에서 인덱싱 할 수 있음
- 인덱싱 해둔 데이터를 검색하면 부분 검색어로도 검색 가능
2. MongoDB Atlas에서 인덱싱하기
- 인덱싱 하고싶은 collection에 접속 후 Indexes탭으로 들어감
- [Create Index]버튼을 눌러줌
- 이렇게 제목을 text 순으로 정렬해준다
3. 코드
(1) server.js
// 검색 기능
app.get("/search", (요청, 응답) => {
// querystring의 값을 찍어보자
console.log(요청.query.value);
db.collection("post")
// db에서 제목값이 요청.query.value인 게시글을 모두 찾아줌
// 아래 형태를 이용하면 text index 만들어둔 걸 이용해서 검색해줌
.find({ $text: { $search: 요청.query.value } })
.toArray((에러, 결과) => {
console.log(결과);
응답.render("searchCon.ejs", { posts: 결과 });
});
});
- 찾을 값을 {$text: { $search: 검색어}}형태로 수정해줌
3. 단점
- 근데 이러면
- “오늘 하루는 맑아요” 라는 문장을 검색하고 싶어서
- ‘하루’를 검색하잖슴 ?
- 그럼 검색 못함…
- 웃긴게
- ‘오늘’, ‘하루는’, ‘맑아요’를 각각 검색하면 찾아주는데
- ‘오’, ‘하’ 등 글자를 분해해서 검색하면 못찾음
반응형
'코딩 > NodeJS' 카테고리의 다른 글
nodejs에서 회원 게시판 기능 만들기 (0) | 2023.02.03 |
---|---|
nodejs랑 mongodb에서 검색 기능 최적화하기(2) (0) | 2023.02.02 |
nodejs랑 mongodb로 검색 기능 만들기 (0) | 2023.01.31 |
nodejs에서 회원가입 기능 구현하기 (0) | 2023.01.30 |
nodejs에서 mypage 구현하기 (0) | 2023.01.29 |