Почему Firestore не работает с несколькими фильтрами диапазона полей? - PullRequest
0 голосов
/ 02 июля 2019

Почему Firestore не работает с несколькими фильтрами диапазона полей?

Я также хочу знать, почему я не могу выполнить полнотекстовый поиск.

Есть ли причина для алгоритма?

Я хочу знать причину.

1 Ответ

1 голос
/ 02 июля 2019

Firestore имеет совершенно уникальную гарантию производительности: время, необходимое для извлечения данных, зависит только от объема данных, которые вы извлекаете, а не от объема данных, из которого вы его извлекаете. Поэтому независимо от того, есть ли в коллекции тысяча, миллион или миллиард документов, для извлечения десяти из этих документов всегда будет требоваться одинаковое количество времени.

Чтобы гарантировать такую ​​производительность, Firestore имеет ограниченный набор (в основном запросов) возможностей. Например: Firestore поддерживает только те запросы, для которых он может перейти к правильной начальной точке в индексе и передавать результаты с этой начальной точки до конца запроса. Это не позволяет поддерживать такие вещи, как:

  • ИЛИ запросы, поскольку они потребуют пропуска по индексу, что сделает невозможным гарантировать производительность. Обратите внимание, что в настоящее время ведется работа по поддержке подмножества возможных запросов IN, чтобы вы могли запросить что-то вроде «дай мне все рестораны, где подают блюда тайской или итальянской кухни».
  • запросов на подстроку текста. Firestore поддерживает только так называемые префиксные запросы, поэтому, когда значение начинается с подстроки, но не там, где значение содержит подстроку. Таким образом, вы можете искать «дать мне все имена, которые начинаются с« zla »», но не «дать мне все имена, которые содержат« лат »».
  • запросы в нескольких диапазонах, поскольку они также могут сделать невозможным гарантировать производительность.

Для другого хорошего объяснения этого см. Знакомство с Cloud Firestore эпизод по запросам .

...