0

我有以下 SOLR 搜索,我试图在我的数据库中使用 Geohashes 基于 lat/lng 查找一些地方,并确保这些地方通过Affiliates表格具有附属链接。

search = Sunspot.search(opts[:types]) do
  any_of do
    0.upto(opts[:range]) do
      geohash = GeoHash.encode(place.lat, place.lng, precision)
      neighbors = GeoHash.neighbors(geohash) rescue []
      geohashes = [geohash] + neighbors
      with(:affiliate_names, ['company_a', 'company_b']) 
      with(:"geohash_#{precision}", geohashes)
      precision -= 1
    end
  end
  without(:class, IgnoreClass) unless opts[:types].include?(VacationRental)
end
search.hits

我遇到的问题是这个搜索在 geohash 中的两个地方和affiliate_names 'company_a' 和'company_b' 的地方都有。具体来说,这两行:

      with(:affiliate_names, ['company_a', 'company_b'])
      with(:"geohash_#{precision}", geohashes)

我希望通过 geohash 和affiliate_name 过滤这些地点。现在,这两个 with 语句就像一个 OR。

如何进行 Solr 太阳黑子搜索以提取同时满足 with 条件的记录?

4

1 回答 1

1

我想到了。

您可以嵌套代码如下

all_of
  with(:affiliate_names, ['company_a', 'company_b'])
  with(:"geohash_#{precision}", geohashes)
end

这将确保您查询的 solr 记录符合这两个要求。

于 2013-06-03T22:25:40.700 回答