【问题标题】:Google Apps Engine Datastore SearchGoogle Apps Engine 数据存储区搜索
【发布时间】:2011-10-05 01:03:51
【问题描述】:

我想知道是否有任何方法可以在数据存储中搜索条目。我有一堆歌曲条目(标题,艺术家,评级),但我不确定如何真正搜索歌曲标题和艺术家。我们接受一个搜索词,并正在寻找所有“匹配”的条目。但是我们迷路了:(非常感谢任何帮助!

  • 我们正在使用 python

edit1:当前代码没用,它是一个精确的搜索,但可能会帮助您查看问题

   query = song.gql("SELECT * FROM song WHERE title = searchTerm  OR  artist = searchTerm")

【问题讨论】:

  • 您需要先定义什么构成“匹配”,我们才能提供帮助。简单的索引可能在这里起作用,或者可能需要使用全文搜索,这一切都取决于您要过滤的条件。
  • 如果可能的话,我想只使用全文,但不知道如何用应用引擎实现它
  • 你还没有描述你想要/需要对这些数据执行什么样的搜索。

标签: python google-app-engine search google-cloud-datastore


【解决方案1】:

您使用的歌曲数据听起来像是一个相当静态的数据集(主要是插入,没有或很少更新)。在这种情况下,有一种称为关系索引实体 (RIE) 的 GAE 技术,它是实现基于关键字的搜索的有效方法。

但是需要一些准备工作,这很简单:

  • 构建特殊的 RIE 实体,您可以在其中放置所有可搜索的关键字 从每首歌(一对一的关系)。
  • RIE 将它们存储在 StringListProperty 中,它支持如下搜索: keywords = 'SearchTerm' (如果列表 keywords 中的任何值与“SearchTerm”匹配,则返回 True)
  • AND 条件通过添加上述多重过滤器立即起作用
  • 通过从 AND-only 查询实现内存中合并,OR 条件需要更多工作

您可以在我的博客Relation Index Entities with Python for Google Datastore 中找到有关解决方案工作流程和代码示例的详细信息。

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2011-02-16
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多