首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Datastore -搜索优化技术

Google Datastore -搜索优化技术
EN

Stack Overflow用户
提问于 2016-04-17 03:01:47
回答 1查看 79关注 0票数 1

我正在处理一个房地产应用程序。一个家庭将有典型的属性,如价格,卧室,浴室,SqFt,批量等用户将搜索房屋,这样的查询将需要多个不等式过滤器,如:价格在x和y之间,房间大于z,浴室超过p。等。

我知道多个不等式过滤器是不允许的。我也不想在我的代码中执行任何过滤,因为我希望能够使用游标。

因此,我提出了两个解决方案。我不确定这些是否是正确的,所以我想知道上师是否可以提供一些启发。

解决方案1:我将对每个属性的值进行离散化,并将它们保存在一个列表字段中,然后使用IN。例如:如果有3个卧室,我将存储beds=3 = 1,2,3,而不是存储床= 1,2,3。现在,如果用户搜索至少有两个卧室的房屋,那么我不会将过滤器写为beds>2,而是将过滤器写为"beds IN 2“-我的家在1,2,3之上将符合条件-任何具有2张床1,2或4张床1,2,3,4的家也将如此

解决方案2:它与第一个类似,但我不会创建list-property,而是将属性(列)添加到home中。因此,具有3个卧室的家庭将具有以下属性/列/属性: col- bed -1:true,col-bed 2:true,col-bed 3:true。现在,如果用户搜索至少有两个卧室的房屋,那么我将把过滤器写为“beds>2 -beds>2-2= true”,而不是将过滤器写为“col 2=true”-我的房屋将符合条件-任何具有2张床、3张床、4张床的房屋也将如此,依此类推

我知道这两种解决方案都会有效,但我想知道: 1.从性能和谷歌定价的角度来看,哪一种更好? 2.有没有更好的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2016-04-17 08:23:52

我使用python gae应用程序几乎完全符合您的用例,该应用程序列出了带有房屋广告的帖子(类似于craigslist)。我用python写的,用过滤器进行搜索很有效,而且很简单。

您应该选择一种语言: Python、Java或Go,然后使用Google Search API (它具有内置的相等或不等式过滤功能)并构建可使用搜索API查询的数据存储索引。

例如,您可以使用如下所示的python类来填充数据存储,然后使用搜索API。

代码语言:javascript
复制
class Home(db.Model):
    address = db.StringProperty(verbose_name='address')
    number_of_rooms = db.IntegerProperty()
    size = db.FloatProperty()
    added = db.DateTimeProperty(verbose_name='added', auto_now_add=True)  # readonly
    last_modified = db.DateTimeProperty(required=True, auto_now=True)
    timestamp = db.DateTimeProperty(auto_now=True)  #
    image_url = db.URLProperty();

我绝对认为您应该避免存储排列,原因有几个:排列可能会爆炸式增长,并使代码难以阅读。相反,你应该像我一样,找到别人已经解决了相同或类似问题的例子。

This appengine demo可能会对您有所帮助。

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

https://stackoverflow.com/questions/36668419

复制
相关文章

相似问题

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