2015-11-11 5 views
0

У меня есть мангуста схемы:поиск текста в Монго

const Article = new Schema({ 
    name:       { type: String,  required: true }, 
    message:       { type: String,  default: "" }, 
    searchField:      { type: String,  default: "" }, 
    ... 
}); 

searchField представляет собой сочетание имен и сообщений полей.

И индекс:

Article.index({searchField: 'text'}); 

Тогда, когда мне нужно искать в списке статей:

query.$text = { $search: data.search }. 

И это работает, но с некоторыми проблемами.

Первый - он не может найти статью, когда data.search.length < = 3. Например, name = 'bag' и data.search = 'bag', это не работает (нормально, если язык английский).

И второй - если имя = 'субтитры' и data.search = 'sub', результата нет.

Что не так?

MongoDB версия оболочки: 3.0.6

ответ

0

Вы можете искать с регулярным выражением. Изменить запрос к этому:

Article.find({searchField: /sub/i}); 

двойной / позволяет искать только часть слова. i в конце игнорирует нижний и верхний регистры.

(Пожалуйста, обратите внимание, что это только поиск в определенной области searchField)

+0

будет медленнее – crumb

+0

@crumb Но $ тексты не допускают регулярное выражение, я боюсь. –

+0

ОК, спасибо. я попробую – crumb

Смежные вопросы