Задать вопрос
@PyTiMa
Учусь, кручусь, верчусь.

Как сделать адекватный поиск по тексту в MongoDB?

Здравствуйте, делаю поиск на express + mongoose.
Есть схема и установка индексов:
var postSchema = mongoose.Schema({
    access: Boolean,
    readed: Boolean,
    title: String,
    num: Number,
    tags: [String],
    text: String,
    author: {
        idNum: Number
    },
    addtime: String,
    comments: [],
    reviews: Number
});


postSchema.plugin(require('mongoose-paginate'));
postSchema.index({ title: 'text', tags: 'text', text: 'text'});

Есть готовый Пост:
{
    "_id" : ObjectId("54beaa0a73ddc8e822708cd3"),
    "addtime" : "20.1.2015",
    "reviews" : 0,
    "readed" : true,
    "text" : "SomeTagSomeTagSomeTag",
    "num" : 2,
    "title" : "SomeTagSomeTag",
    "access" : true,
    "comments" : [],
    "author" : {
        "idNum" : 1
    },
    "tags" : [ 
        "SomeTag"
    ],
    "__v" : 0
}

Написал в роутах вот это:
Post.paginate({'access':true, 'text':{'search':req.body.call}}, req.query.page, req.query.limit, callback);// тут я все писать не буду, не важно дело.

И когда я запрашиваю поиск со значением SomeTag (или же в нижнем регистре) - мне отдает этот пост.
Но, когда я пишу 'Some' или 'SomeTagSomeTag'(это title) - в ответ пустой массив :((
Как можно это исправить?
Буду благодарен за помощь..
  • Вопрос задан
  • 2578 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@Nc_Soft
это очень просто исправить, нужно всего лишь выкинуть это говно и заюзать специализированные инструменты
sphinxsearch.com
elasticsearch.com
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы