Solr中的条件FilterQuery

时间:2013-03-12 15:57:29

标签: solr lucene

是否可以有条件地执行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

EDIT2:

解决方案:

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

1 个答案:

答案 0 :(得分:2)

您可以尝试使用FunctionQuery。有预先构建的功能,或者你可以write a custom Function Query

既然你提到了城市,我很想指出你Geohash function,但我不确定这是不是你想要的。

相关问题