Как искать в Cloudant с помощью поискового индекса - PullRequest
0 голосов
/ 27 сентября 2018

Извините за вопрос новичка.Я пытаюсь выполнить запрос к базе данных Cloudant с помощью образца кода (взятого из официального репозитория cloudant gitHub):

To query using the index, use the `.find()` method.

~~~ js
db.find({selector:{name:'Alice'}}, function(er, result) {
  if (er) {
    throw er;
  }

  console.log('Found %d documents with name Alice', result.docs.length);
  for (var i = 0; i < result.docs.length; i++) {
    console.log('  Doc id: %s', result.docs[i]._id);
  }
});
~~~

Мне нужно выполнить поиск по всему документу в базе данных и улучшить производительность этого запроса. Я создал индекс поиска (особенно для поля "имя").Но как мне определить в коде, что я хочу использовать индекс, и какой из них, если они есть, есть?

1 Ответ

0 голосов
/ 28 сентября 2018

Конечная точка API _find, которая поддерживает метод .find(), будет использовать индекс автоматически, , если может .Иногда это невозможно - обычно потому, что фактический запрос не соответствует индексу.Чтобы лучше понять этот механизм, стоит ознакомиться с документацией для Cloudant Query .

Можно указать фактический индекс для запроса для использования через параметр use_index - но я не проверял, реализовано ли это в клиенте node.js, но в большинстве случаев это не должноВ этом нет необходимости.

Существует еще одна полезная конечная точка API, которая называется _explain , которая покажет вам найденные индексы или, если запрос откатится на полное сканирование БД (которого вы хотите избежать!).

Обратите внимание, что когда вы используете _find (.find()), вы на самом деле используете нечто, называемое Cloudant Query, а не Cloudant Search.Это различие важно, поскольку Cloudant Search - это другой механизм запросов, который предлагается.

...