2

是否可以有条件地执行 FilterQuery (fq)?

换句话说:只有在某个条件为真时才执行它。

例子:

我的 solr 数据库中有多个城市及其地理位置。我还存储它们是否重要。现在我想查询某个地理位置范围内的所有城市,但也总是返回重要的城市。

或者在类似 SQL 的语法中(我知道这很可怕,甚至不正确的 SQL,但它解释了我的需求):

select *
from cities
having distance(cityname, 30, 30) or important(cityname)

到目前为止,我还没有发现类似的东西。我可以在自定义过滤器查询中做到这一点,但我不想这样做:)。

提前致谢。

编辑:

我想用它来做类似真实世界的事情:

{!geofilt pt=30.2,23.0 sfield=locationCoordinates d=20 cost=20} or nationWide:true

编辑2:

解决方案:

map(query({!geofilt pt=20.3,30.2 sfield=locationCoordinates d=1}, -1), -1, -1,   nationWide:true)

在这种情况下应该可以使用负值:http: //www.solrtutorial.com/solr-search-relevancy.html

4

1 回答 1

2

您可以尝试使用FunctionQuery。有可用的预构建函数,或者您可以编写自定义函数查询

既然您提到了城市,我很想向您指出Geohash 功能,但不确定这是否是您正在寻找的。

于 2013-03-12T16:03:08.287 回答