mongoDB text, search

채희태·2022년 9월 16일

Text Index

MongoDB는 문자열 내용의 텍스트 검색을 수행하는 쿼리를 지원한다. 텍스트 검색을 수행하기 위해 몽고디비는 텍스트 인덱스와 $text 연산자를 사용한다.
텍스트 검색 쿼리를 수행하려면 컬렉션에 text 인덱스가 있어야한다.
db.stores.createIndex({title:"text"})

실제 사용 예제

Product모델의 title필드를 사용해 검색을 하려고 한다.

models/Product.js

productSchema.index({
  title: "text",
});

$text Operation

$text 쿼리 연산자를 이용하여 텍스트 인덱스가 있는 컬렉션에서 텍스트 검색을 할 수 있다.
db.stores.find( { $text: { $search: "java coffee shop" } } )

실제 사용 예제
routes/product.js

router.post('/product', (req, res) => {
  const search = req.body.search;
  Product
    .find()
    .find({ $text: { $search: search } })
  	.exec()
})

weight

텍스트 검색은 인덱싱된 필드에 검색어가 포함된 각 문서에 점수를 할당한다.
text인덱스의 경우 인덱싱된 필드의 가중치 는 텍스트 검색 점수 측면에서 다른 인덱싱된 필드에 상대적인 필드의 중요성을 나타낸다.

db.blog.createIndex(
   {
     title: "text",
     description: "text",
   },
   {
     weights: {
       title: 10,
       description: 5
     },
   }
 )

실제 사용 예제
models/Product.js

productSchema.index(
  {
    title: "text",
    description: "text",
  },
  {
    weights: {
      title: 10,
      description: 5,
    },
  }
);
profile
기록, 공부, 활용

0개의 댓글