【问题标题】:Shopify GraphQL partial matching on query filterShopify GraphQL 查询过滤器上的部分匹配
【发布时间】:2018-08-08 08:48:33
【问题描述】:

我刚刚开始使用新的 Shopify GraphQL Admin API。我正在尝试检索所有产品,其中 title 字段包含某个单词。

目前我可以通过包含完整的产品标题(完全匹配)成功检索产品:

{
  shop {
    id
    name
  }
  products(first: 10, query:"title:'RAVEN DUSTY OLIVE/SILVER MESH'") {
    edges {
      node {
        productType
        title
      }
    }
  }
}

但是,我想部分匹配标题以显示标题中任何位置带有“Raven”一词的所有产品,但以下不返回任何结果:

{
  shop {
    id
    name
  }
  products(first: 10, query:"title:'RAVEN'") {
    edges {
      node {
        productType
        title
      }
    }
  }
}

关于如何使部分匹配起作用的任何想法?

【问题讨论】:

  • 您是否尝试过询问 Shopify 技术团队是否偷偷为 LIKE 类型的运营商提供了某种运营商支持? GraphQL 不是 SQL,除非底层实现提供了部分匹配,否则不存在部分匹配之类的东西。如果 Shopify 还没有发布这样的东西,那你就不走运了。回到自己获取所有产品的基础知识,然后在自己的代码中进行过滤。我想如果有足够多的人要求进行部分匹配,他们会为它提供一个函数运算符,这比简单的简匹配成本要高。
  • 感谢@DavidLazar,在发布问题后解决了.. 事实上,Shopify 必须有一个解析器才能工作:( 现在回到良好的旧 REST API,它至少支持一些开箱即用地过滤标题属性。将在此问题上 ping Shopify 团队,因此希望将来我们也可以在 GraphQL API 上获得它。

标签: graphql shopify shopify-app


【解决方案1】:

比约恩!这应该有效:

{
  shop {
    id
    name
  }
  products(first: 10, query:"title:RAVEN*") {
    edges {
      node {
        productType
        title
      }
    }
  }
}

查看文档:https://help.shopify.com/en/api/getting-started/search-syntax

【讨论】:

  • 关于为什么“title:RAVEN*”同步对我不起作用的任何提示?我已经尝试了所有显而易见的事情。测试集合而不是产品。
  • prefix query 在这种情况下有效。不幸的是,没有后缀查询。它会找到以 raven 开头的词,但不会返回像“craven”这样的词。
【解决方案2】:

你也可以试试

query: "title:*${searchText}*"

你可以在开头和结尾看到两个 *

【讨论】:

  • 这不起作用。搜索语法只提供前缀查询,而不是后缀查询。
猜你喜欢
  • 2019-04-06
  • 2013-08-05
  • 2020-12-09
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 2018-08-29
  • 2019-12-29
  • 2019-08-28
相关资源
最近更新 更多