【问题标题】:How to do paged queries in RETS?如何在 RETS 中进行分页查询?
【发布时间】:2013-09-11 18:45:00
【问题描述】:

我正在使用 java 客户端 (jrets) 来查询 RETS 服务器。此 rets 服务器不支持 OFFSET 功能。

服务器管理员告诉我使用 MODIFIED 字段作为翻阅记录的一种方式。但是,我发现这个过程不起作用。

我的用例:

用例是从今年一月开始下载某种类型的所有记录。所以,我发出一个限制为 500 的查询并下载记录。我浏览了数据,并获得了最大修改日期。然后我从那时起发出另一个查询。

但是我发现服务器没有按修改日期对数据进行排序并返回它。所以,每批次的数据都存在差距。

有没有更好的方法来实现我想做的事情?

【问题讨论】:

    标签: rets


    【解决方案1】:

    RETS 不支持排序。服务器管理员可能意味着您要使用日期范围进行查询。

    RETS 服务器应该支持日期范围查询,例如(date_field=2009-01-01-2009-01-25),甚至支持时间查询,例如(MODIFIED=2013-08-01T00:00:00-2013-08-31T23:59:59)

    通过这种方式,您可以计算出您需要发送的一批查询,以检索所有列表。您在脚本中设置的时区会产生影响,因此您需要知道服务器时间是多少。有些会使用 UTC/GMC,有些会使用他们的本地时间。

    这里有更多帮助,https://www.flexmls.com/developers/rets/tutorials/dmql-tutorial/

    【讨论】:

    • 我相信我的本地 MLS RETS 限制返回 2500 条记录。如果给定查询的日期范围之间有超过 2500 条记录,我将如何获取它们?如果我再次查询日期范围,我将收到相同的 2500 条记录。除了我猜的反复试验之外,我没有更多信息知道如何缩小搜索范围?
    • 我想我已经回答了我自己的问题。您可以使用列表 ID。
    【解决方案2】:

    我不确定这是否通用,但 GAMLS RETS 会发送按 L_ListingID 排序的响应。

    我可以开始

    query = "(L_UpdateDate=2017-01-01T11:42:59Z+)"

    然后在响应中找到最大的'L_ListingID

    建立一个新的查询

    query = "(L_UpdateDate=2017-01-01T11:42:59Z+),(L_ListingID=[LARGEST_Listing_ID])"

    然后继续,直到我得到一个空的回复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多