如何使用blob或长字符串搜索Web内容

时间:2014-01-27 21:53:53

标签: python django google-app-engine full-text-search

根据https://developers.google.com/appengine/docs/python/datastore/datamodeling

  

数据存储区支持两种用于存储文本的值类型:短文本字符串,长度最多为500个字符,长文本字符串最长为1兆字节。短字符串被索引,可用于查询过滤条件和排序顺序。长字符串不会被索引,也不能用于过滤条件或排序顺序。

对我来说这是一个问题,因为我的网站上的文字很重,有政府文件。该网站的重点是使这些文件易于访问,即可搜索。然后我也阅读:https://developers.google.com/appengine/training/fts_intro/

  

搜索可以查询任何数据,只要该数据由搜索文档描述即可。

我一点也不清楚我实际上可以对我的大型文本字段文档进行全文搜索,因为搜索对象显然与数据存储区实体不同。所以,我的问题: 如果您有大量文本,并且无法对其进行索引,过滤或排序,是否可以使用搜索API找到它,或者此处是否也适用无索引规则?如果是这样,那么如何有效地使用GAE与大型文本文档? 谢谢。

2 个答案:

答案 0 :(得分:1)

使用类似django-watson的内容进行全文搜索。

示例型号代码:

import watson

class Document (models.Model):

    #: Title for the item
    title = models.CharField(max_length=45, blank=False, 
        help_text="Document title")

    #: Description for the item.
    description = models.TextField(blank=False, 
        help_text="Description of the document")

    #: Document text for searching
    doc_text = models.TextField(blank=False, 
        help_text="Searchable document text")

watson.register(Document.objects.all(), fields=("title", "description", 
    "doc_text"))

答案 1 :(得分:1)

我不确定你的问题是什么。搜索长文本字段正好 full-text search API的用途。

FTS服务与数据存储区没有直接关系,这就是您引用的页面谈论“文档”的原因。您可以通过编程方式创建搜索文档,可能使用部分或全部数据存储区域,然后您可以对其进行搜索。