我有以下SOLR搜索,我试图在我的数据库中找到基于lat / lng使用Geohashes的几个地方,并确保这些地方通过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过滤地点。现在,带有语句的两个语句就像一个OR。
如何进行Solr太阳黑子搜索以提取符合条件的记录?
答案 0 :(得分:1)
我明白了。
您可以按如下方式嵌套代码
all_of
with(:affiliate_names, ['company_a', 'company_b'])
with(:"geohash_#{precision}", geohashes)
end
这将确保您查询的solr记录符合要求。