2011-10-05 141 views
1

我想知道是否有任何方式在数据存储中搜索条目。我有一堆歌曲(标题,艺术家,评级)的条目,但我不知道如何真正搜索他们的歌曲名称和艺术家。我们搜索一个搜索词,并正在查找所有“匹配”条目。但是,我们都将丢失:(任何帮助深表感谢Google Apps引擎数据存储搜索

  • 我们正在使用python

EDIT1:当前的代码是没用的,其精确的搜索,但可能会帮助你看到的问题

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

您需要定义什么是“匹配”,然后才能提供帮助。简单的索引可能在这里工作,或者可能有必要使用全文搜索,全部取决于您想要过滤的条件。 –

+0

我想尽可能使用全文,但不知道如何通过应用引擎实现该功能 – Aaronf8

+1

您还没有描述过您希望/需要对此数据执行哪种搜索。 –

回答

1

你听起来更为静态数据集(主要是插入,没有或很少更新)工作的乐曲数据。在这种情况下,有GAE技术称为关系索引实体(RIE),它是实现基于关键词的搜索的有效方法。

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

这里您将所有搜索关键字 从每首歌曲(一到一个关系)
  • 订做特殊RIE实体。
  • RIE将它们存储在StringListProperty支持这样的搜索: keywords = 'SearchTerm' (返回true如果列表中的任何keywords匹配“SearchTerm'`的数值)
  • 和条件的工作立即加入multipe上述过滤器
  • OR条件通过在内存中执行需要更多的工作,从合并和唯一的查询

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