【问题标题】:How to match strings that contain a string using a filter - Google App Engine如何使用过滤器匹配包含字符串的字符串 - Google App Engine
【发布时间】:2012-12-01 21:08:13
【问题描述】:

在 Google App Engine 中,如何匹配包含字符串的字符串?我的数据存储包含“tester”,如果我传入“est”,则应该返回 tester。

Filter myFilter =  new FilterPredicate("name",FilterOperator.IN, "est");

但我收到此错误:A collection of values is required

我认为我没有正确使用过滤器。

【问题讨论】:

标签: java google-app-engine


【解决方案1】:

您不能按照您描述的方式使用 IN 过滤器。如果你给出一个字符串列表,并且想要匹配给定列表中的一个字符串,IN 就可以工作。

搜索 API 存在于您正在尝试执行的操作中: https://developers.google.com/appengine/docs/python/search/overview

可以使用大于/小于搜索来查找以子字符串开头的字符串,但如果要在字符串中的任何位置查找子字符串,则需要使用 Search API。

【讨论】:

    【解决方案2】:

    即使应用引擎不支持通配符,一个可能的解决方案是将每个可能的顺序组合插入数据存储区。

    所以如果想对“设计”进行通配符搜索

    添加以下条目:

    'd'
    'de'
    'des'
    'desi'
    'desig'
    'design'
    'e'
    'es'
    'esi'
    'esig'
    'esign'
    's'
    'si'
    'sig'
    'sign'
    'i'
    'ig'
    'ign'
    'g'
    'gn'
    'n'
    

    这些都是“设计”通配符搜索的所有可能组合。虽然这样非常浪费数据存储内存。

    【讨论】:

      【解决方案3】:

      由于字符串可以与 >= 和 设计
      设计
      签到
      登录
      gn
      n

      要搜索所有带有“符号”的名称,您需要查询:

      name >= 'sign' AND name

      实际上,您可以将组合截断限制为 4 个字符;很少有人可能需要完整的结果集来搜索所有包含“n”的名称。

      【讨论】:

      • 什么是 \ufffd ?
      • @thegreatcoder 只是一个非常大的 unicode 值。我在编写该查询时使用的是 java。
      猜你喜欢
      • 2020-07-17
      • 1970-01-01
      • 2019-04-24
      • 2022-12-05
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      相关资源
      最近更新 更多