Я хотел бы реализовать словарь, чтобы проверить правильность написания какого-либо текста. В этом словаре есть 20 000 слов. Мое приложение (которое является метеорным приложением) сначала загрузит текст. Теперь я бы разделил этот текст на слова и проверил, есть ли каждый из них в словаре.MongoDB: Как реализовать поисковый словарь для проверки текста
Но разве это технически лучший способ? Текст со 100 словами, будет иметь 100 вызовов БД, что не очень хорошо. Но и это не имеет смысла для меня, чтобы загрузить 20.000 слова укомплектовать в массиве, чтобы сделать поиск ...
let incorrect = [];
text.split(' ').forEach(word => {
if (!Dictionary.findOne({ word: word })) {
incorrect.push(word);
}
})
if (incorrect.length)
console.log('There is a spelling mistake');
else
console.log('Everything seems to be correct');
Другим способом, которым я думал, это разослать массив с расщепленными словами в запросе и получить все недостающие элементы в результате (массив). Но я не знаю, может ли это сделать mongoDB.
Хорошая идея. Но это не даст мне слова с ошибками ... – user3142695
Могли бы вы использовать агрегирование манго? Я мог бы написать агрегацию для достижения этой цели в одной операции db. В противном случае простая функция diff на входе arr и результат arr из 'find' должны выполнять задание – Khang
Я думаю, что не могу использовать скопления в meteor mongo (minimongo), но идея с использованием diff для результатов (без использования count), кажется, хорошо. Как получить единственный массив результатов? – user3142695