나는 텍스트 검색을 수행하기 위해 nodeJs Mongoose를 사용하고 있습니다.텍스트 검색 공백이 이스케이프
var mongoose = require('mongoose');
var config = require('../config');
var mongoosePaginate = require('mongoose-paginate');
var poiSchema = mongoose.Schema({
city:String,
cap:String,
country:String,
address: String,
description: String,
latitude: Number,
longitude: Number,
title: String,
url: String,
images:Array,
freeText:String,
owner:String,
});
poiSchema.index({'$**': 'text'});
poiSchema.plugin(mongoosePaginate);
mongoose.Promise = global.Promise;
mongoose.connect(config.database);
module.exports = mongoose.model('Poi', poiSchema);
여기
poiSchema.index({'$**': 'text'});
을 볼 수 있듯이 내 스키마 내의 모든 필드에 텍스트 인덱스를 만들 수 있습니다. 나는 용어 검색 내부에 공백을 사용할 때
var term = "a search term";
var query = {'$text':{'$search': term}};
Poi.paginate(query, {}, function(err, pois) {
if(!pois){
pois = {
docs:[],
total:0
};
}
res.json({search:pois.docs,total:pois.total});
});
불행하게도,이 기간 안에 모든 단일 필드와 일치 컬렉션 내부의 모든 문서를 가져옵니다 : 나는 텍스트 검색을 수행 할 때
,이 코드를 개발 공백으로 검색을 분할하십시오.
텍스트 색인이 토크 나이저 공백으로 있다고 생각합니다.
전체 용어 검색이있는 모든 필드를 분할하지 않고 공백을 이스케이프 처리하는 방법을 알아야합니다.
공백을 \\
으로 바꾸려고 시도했지만 아무 것도 변경되지 않았습니다.
누군가 나를 도울 수 있습니까?