Сделайте запрос с подстановочными знаками в Datastore GQL - PullRequest
0 голосов
/ 29 июня 2018

Я пробую хранилище данных Google Cloud и столкнулся со сценарием, который я не могу понять.

У меня есть две сущности вида searchterm, оба со свойством searchterm, одна - "розовая курица", а другая - с "красной уткой".

Я пытаюсь использовать GQL select * from searchterm where searchterm contains "chicken" чтобы получить объект, обладающий свойством searchterm «розовый цыпленок». Тем не менее, это не позволяет мне сделать это.

Я должен полностью указать select * from searchterm where searchterm contains "pink chicken", чтобы получить соответствующий ответ.

Не означает ли contains в GQL, что оно подразумевает? Могу ли я выполнить запрос GQL с подстановочным знаком для соответствия строкам?

Да, я проверил, что свойство searchterm проиндексировано.

Спасибо! : D

1 Ответ

0 голосов
/ 29 июня 2018

Cloud Datastore не поддерживает такого рода запросы, и CONTAINS или contains просто равно, но оно выполняет поиск подстрок. Для таких случаев, как ваш, используйте Search API.

Вы можете сослаться на эту цитату здесь :

Notice that the operator = is another name for the IN and CONTAINS operators. For example, <value> = <property-name> is the same as <value> IN <property-name>, and <property-name> = <value> is the same as <property-name> CONTAINS <value>. Also <property-name> IS NULL is the same as <property-name> = NULL.

А по поводу того, что хранилище данных не поддерживает такого рода запросы, обратитесь к этой ссылке :

Ограничения на запросы
Природа механизма индексных запросов накладывает определенные ограничения на то, что может делать запрос. Запросы Cloud Datastore не поддерживают совпадения подстрок, нечувствительные к регистру совпадения или так называемый полнотекстовый поиск. Операторы NOT, OR и! = Изначально не поддерживаются, но некоторые клиентские библиотеки могут добавить поддержку поверх Cloud Datastore.

...