MongoDB는 문자열 내용의 텍스트 검색을 수행하는 쿼리를 지원한다. 텍스트 검색을 수행하기 위해 몽고디비는 텍스트 인덱스와 $text 연산자를 사용한다.
텍스트 검색 쿼리를 수행하려면 컬렉션에 text 인덱스가 있어야한다.
db.stores.createIndex({title:"text"})
실제 사용 예제
Product모델의 title필드를 사용해 검색을 하려고 한다.
models/Product.js
productSchema.index({
title: "text",
});
$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()
})
텍스트 검색은 인덱싱된 필드에 검색어가 포함된 각 문서에 점수를 할당한다.
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,
},
}
);