Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr中的条件筛选查询_Solr_Lucene - Fatal编程技术网

Solr中的条件筛选查询

Solr中的条件筛选查询,solr,lucene,Solr,Lucene,是否可以有条件地执行FilterQuery(fq) 换句话说:只有当某个条件为真时才执行它 例如: 我的solr数据库中有多个城市及其地理位置。我还额外存储了它们是否重要。现在我想查询地理位置一定范围内的所有城市,但也总是返回重要城市 或者使用类似SQL的语法(我知道这很可怕,甚至不是正确的SQL,但它解释了我的需求): 到目前为止,我还没有找到类似的东西。我可以在自定义筛选器查询中这样做,但我不想这样做:) 提前谢谢 编辑: 我想用它来做的类似现实世界的事情: {!geofilt pt=30.

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

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

例如:

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

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

到目前为止,我还没有找到类似的东西。我可以在自定义筛选器查询中这样做,但我不想这样做:)

提前谢谢

编辑:

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

{!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)