@PyTiMa
Учусь, кручусь, верчусь.

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

Доброго времени суток, как сделать поиск постов на монге + их пагинацию?
===============Это уже решено, спасибо smanioso ==================
Post.paginate({ 'access' : true, $text: {$search: req.body.call} },.... и так далее

Выдает ошибку:
802a521458b44b0ab6046e249150b835.png
================================================================
Но появилась другая проблема:
Установил индексы вот так:
// tags это массив, остальное - типа Строка.
postSchema.index({ title: 'text', tags: 'text', text: 'text'});
// в роуте
Post.paginate({'access':true, '$text':{'$search':req.body.call}}, callback


Но, есть Пост вот такой:
{
    "_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
}


И когда я запрашиваю поиск со значением SomeTag (или же в нижнем регистре) - мне отдает этот пост.
Но, когда я пишу 'Some' или 'SomeTagSomeTag'(это title) - в ответ пустой массив :((
Как можно это исправить?(((
  • Вопрос задан
  • 3144 просмотра
Решения вопроса 1
smanioso
@smanioso
Отмечайте ответы на свои вопросы!
Судя по всему проблема с индексами. Почитайте тут:
- habrahabr.ru/post/174457
- stackoverflow.com/questions/24257390/mongodb-text-...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@PyTiMa Автор вопроса
Учусь, кручусь, верчусь.
Эх... Установил индексы вот так:
// tags это массив, остальное - типа Строка.
postSchema.index({ title: 'text', tags: 'text', text: 'text'});
// в роуте
Post.paginate({'access':true, '$text':{'$search':req.body.call}}, callback

Но, есть Пост вот такой:
{
    "_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
}

И когда я запрашиваю поиск со значением SomeTag (или же в нижнем регистре) - мне отдает этот пост.
Но, когда я пишу 'Some' или 'SomeTagSomeTag'(это title) - в ответ пустой массив :((
Как можно это исправить?(((
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы