Solr中的条件筛选查询
是否可以有条件地执行FilterQuery(fq) 换句话说:只有当某个条件为真时才执行它 例如: 我的solr数据库中有多个城市及其地理位置。我还额外存储了它们是否重要。现在我想查询地理位置一定范围内的所有城市,但也总是返回重要城市 或者使用类似SQL的语法(我知道这很可怕,甚至不是正确的SQL,但它解释了我的需求): 到目前为止,我还没有找到类似的东西。我可以在自定义筛选器查询中这样做,但我不想这样做:) 提前谢谢 编辑: 我想用它来做的类似现实世界的事情:Solr中的条件筛选查询,solr,lucene,Solr,Lucene,是否可以有条件地执行FilterQuery(fq) 换句话说:只有当某个条件为真时才执行它 例如: 我的solr数据库中有多个城市及其地理位置。我还额外存储了它们是否重要。现在我想查询地理位置一定范围内的所有城市,但也总是返回重要城市 或者使用类似SQL的语法(我知道这很可怕,甚至不是正确的SQL,但它解释了我的需求): 到目前为止,我还没有找到类似的东西。我可以在自定义筛选器查询中这样做,但我不想这样做:) 提前谢谢 编辑: 我想用它来做的类似现实世界的事情: {!geofilt pt=30.
{!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)
在这种情况下可以使用负值:
您可以尝试使用。有预构建的功能可用,或者您可以
既然你提到了城市,我很想给你指一下,但我不确定这是否是你要找的。你能用给定的例子详细说明一下吗?geohash并不是我真正需要的。你能用数学公式表达你的距离计算吗?我不太擅长这个计算。嗯,现在我知道你想要什么了。你想让我手工计算距离吗?是的。如果您是用SQL编写的,则必须执行类似的操作(即编写
distance
函数,以返回一个可以比较的值)。查询SOLR类似,只是语法不同。
map(query({!geofilt pt=20.3,30.2 sfield=locationCoordinates d=1}, -1), -1, -1, nationWide:true)