首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google搜索API通配符

Google搜索API通配符
EN

Stack Overflow用户
提问于 2018-07-26 14:48:32
回答 1查看 429关注 0票数 1

我有一个运行在谷歌应用引擎上的Python项目。我当前在数据存储中放置了一组数据。在用户端,我从我的API中获取它们,并在带有客户端搜索的Google Visualization表上向用户显示它们。由于限制,我一次只能获取1000条记录。我希望我的用户从我拥有的所有记录中进行搜索。我可以在显示它们之前使用多个查询来获取它们,但是获取1000条记录已经花费了5-6秒的时间,所以这个过程可能会超过30秒的超时,我不认为在一个表上放置大约20.000条记录是个好主意。

所以我决定把我的记录放到谷歌搜索API上。编写了一个脚本以在数据存储和搜索API索引之间同步重要数据。执行搜索时,找不到任何通配符之类的内容。例如,假设我让user字段存储一个包含"Ilhan“值的字符串。当用户搜索"Ilha“时,该记录不会显示。我想显示包含"Ilhan“值的记录,即使它只是部分输入。所以基本上SQL等效于我的搜索应该类似于"select * from users where user like '%ilh%'“。

我想知道有没有办法做到这一点,或者这不是搜索API的工作方式吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-26 23:14:47

我完全在数据存储中设置了类似的功能。我有一个重复计算的属性,它包含可以为给定对象形成的所有搜索子字符串。

代码语言:javascript
复制
class User(ndb.Model):
    # ... other fields
    search_strings = ndb.ComputedProperty(
        lambda self: [i.lower() for i in all_substrings(strings=[
            self.email,
            self.first_name,
            self.last_name,], repeated=True)

然后,您的搜索查询将如下所示:

代码语言:javascript
复制
User.query(User.search_strings == search_text.strip().lower()).fetch_page(20)

如果你不需要Google Search API的其他功能,如果每个实体的子字符串数量不会让你面临达到900个属性限制的风险,那么我建议你这样做,因为它非常简单和直接。

至于需要5-6秒来获取1000条记录,您需要获取那么多记录吗?为什么不只获取100甚至20个,并使用查询游标让用户仅在需要时才提取下一个页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51532604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档