我使用Django Haystack和Elasticsearch。 ElasticSearch可以执行距离查询并返回5英里半径的11个结果,而Haystack的dwithin方法仅返回相同标准的一个结果。以下是我在表单中使用的搜索查询。
def search(self):
if not self.is_valid():
return self.no_query_found()
if not self.cleaned_data['q']:
return self.no_query_found()
sqs = self.searchqueryset.all()
distance = D(mi=5)
obj= Geo.objects.get(zip_code=self.cleaned_data['q'])
latitude = obj.latitude
longitude = obj.longitude
center_point = Point(longitude, latitude)
sqs = sqs.dwithin('location', center_point, distance)
if self.load_all:
sqs.load_all()
return sqs
答案 0 :(得分:1)
这是答案。如果你接受一个字符串输入,你需要将它转换为int,然后乘以1000.第一部分是有道理的。最后一部分没有记录,所以你走了。