fullText не работает в Parse Server с Mlab

Я бегаю parse server(2.8.4)по героку с Млаб. Я пытаюсь выполнить поиск на основе совпадения слов, но полный текст выдает ошибку, вот мой запрос:

var query1 = new Parse.Query("SearchTerms");
query1.fullText("searchString", "programmer");

Это вызывает ошибку ниже:

ParseError {
2019-11-24T03:01:42.421284+00:00 app[web.1]:   code: 1,
2019-11-24T03:01:42.421285+00:00 app[web.1]:   message: {
2019-11-24T03:01:42.421286+00:00 app[web.1]:     name: 'MongoError',
2019-11-24T03:01:42.421287+00:00 app[web.1]:     message: 'text index required for $text query',
2019-11-24T03:01:42.421288+00:00 app[web.1]:     ok: 0,
2019-11-24T03:01:42.421289+00:00 app[web.1]:     errmsg: 'text index required for $text query',
2019-11-24T03:01:42.421290+00:00 app[web.1]:     code: 27,
2019-11-24T03:01:42.421291+00:00 app[web.1]:     codeName: 'IndexNotFound',
2019-11-24T03:01:42.421292+00:00 app[web.1]:     operationTime: '6762703032942592018',
2019-11-24T03:01:42.421293+00:00 app[web.1]:     '$clusterTime': { clusterTime: '6762703032942592018', signature: [Object] }
2019-11-24T03:01:42.421294+00:00 app[web.1]:   }
2019-11-24T03:01:42.421295+00:00 app[web.1]: }

В Интернете я нашел решение ниже:

db.collection.createIndex(
   {
     field1: "text",
     field2: "text",
     etc...         
   }
)

Но я не знаю, где разместить этот код.

Есть ли способ использовать это решение с mlab

ПРОБЛЕМА ИНДЕКСА БЫЛА РЕШЕНА, следуя руководству от @Suat

Но появляется новая проблема: я использую 10 или запрашиваю с fullText и получаю эту ошибку:

    [31merror[39m: Error generating response. ParseError {
2019-11-25T08:46:46.632775+00:00 app[web.1]: code: 1,
2019-11-25T08:46:46.632776+00:00 app[web.1]: message: MongoError: Too many text expressions
2019-11-25T08:46:46.632778+00:00 app[web.1]: at queryCallback (/app/node_modules/mongodb-core/lib/cursor.js:247:25)
2019-11-25T08:46:46.632779+00:00 app[web.1]: at /app/node_modules/mongodb-core/lib/connection/pool.js:531:18
2019-11-25T08:46:46.632781+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:75:11) {
2019-11-25T08:46:46.632783+00:00 app[web.1]: name: 'MongoError',
2019-11-25T08:46:46.632784+00:00 app[web.1]: message: 'Too many text expressions',
2019-11-25T08:46:46.632785+00:00 app[web.1]: ok: 0,
2019-11-25T08:46:46.632787+00:00 app[web.1]: errmsg: 'Too many text expressions',
2019-11-25T08:46:46.632788+00:00 app[web.1]: code: 2,
2019-11-25T08:46:46.632789+00:00 app[web.1]: codeName: 'BadValue',
2019-11-25T08:46:46.632791+00:00 app[web.1]: operationTime: Timestamp { bsontype: 'Timestamp', low: 6, high_: 1574671603 },
2019-11-25T08:46:46.632792+00:00 app[web.1]: '$clusterTime': { clusterTime: [Timestamp], signature: [Object] },
2019-11-25T08:46:46.632793+00:00 app[web.1]: [Symbol(mongoErrorContextSymbol)]: {}
2019-11-25T08:46:46.632794+00:00 app[web.1]: }

1 ответ

Решение

Ваш вопрос в основном связан с MongoDB и mLab.

  1. Откройте панель управления mLab
  2. Выберите ваше развертывание
  3. Выберите вашу базу данных
  4. Выберите свою коллекцию

На странице сведений о коллекции вверху находятся Документы, Индексы, Статистика, Инструменты.

Выберите Индексы и нажмите кнопку "Добавить индекс", появится всплывающий экран, на котором вы можете ввести такие индексы.

{
     "job": "text"      
}

а затем нажмите кнопку "Создать в фоновом режиме". Через несколько секунд ваш индекс будет создан, и теперь вы можете использовать функцию fullText.

Но помните

Примечание. Полнотекстовый поиск может потребовать значительных ресурсов. Убедитесь, что стоимость использования индексов оправдывает выгоду, см. Требования к хранилищу и затраты на производительность текстовых индексов.

Другие вопросы по тегам