Plots2: 検索API:エンドポイント/ srch / nearbyPeopleは最新のユーザーで並べ替える必要があります

作成日 2018年10月22日  ·  3コメント  ·  ソース: publiclab/plots2

ここで説明したように(質問:地図上にさらにどのようなデータレイヤーを表示できますか? )指定された緯度、経度、タグ(オプション)に関して近くの人を検索する新しい方法を実装しました(#3719)。

コードはここにあります: https

  def tagNearbyPeople(query, tag, limit = 10)
    raise("Must separate coordinates with ,") unless query.include? ","

    lat, lon =  query.split(',')

    user_locations = User.where('rusers.status <> 0')\
                         .joins(:user_tags)\
                         .where('value LIKE ?', 'lat:' + lat[0..lat.length - 2] + '%')\
                         .distinct
    if tag.present?
      user_locations = User.joins(:user_tags)\
                       .where('user_tags.value LIKE ?', tag)\
                       .where(id: user_locations.select("rusers.id"))
    end

    ids = user_locations.collect(&:id).uniq || []

    items = User.where('rusers.status <> 0').joins(:user_tags)
                .where('rusers.id IN (?) AND value LIKE ?', ids, 'lon:' + lon[0..lon.length - 2] + '%')

    # selects the items whose node_tags don't have the location:blurred tag
    items.select do |item|
      item.user_tags.none? do |user_tag|
        user_tag.name == "location:blurred"
      end
    end

    items = items.limit(limit)
  end

次のステップとして、少なくとも最新のサインアップで結果をソートするようにメソッドを変更する必要があります。

search_profiles()メソッドは、最新のユーザーによって結果を並べ替えます。ここでも同じ戦略を使用できると思います。

Ruby help wanted search

全てのコメント3件

素晴らしい !!!

@milaaraujoこれに

もちろん、問題を自分に割り当ててください。

このページは役に立ちましたか?
0 / 5 - 0 評価