2013-03-12 161 views
2

是否可以有條件地執行FilterQuery(fq)?Solr中的條件篩選查詢

換句話說:只有在特定條件爲真時才執行它。

例子:

我有多個城市和他們在我的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

回答

2

您可以嘗試使用FunctionQuery。有預建的功能可用,或者您可以write a custom Function Query

既然你提到了城市,我很想指點你Geohash function,但我不確定這是你在找什麼。

+0

請問您能詳細說明一下給出的例子嗎? – 2013-03-12 16:09:45

+0

geohash並不是我所需要的。 – 2013-03-12 16:21:25

+0

你能用數學公式表達你的距離計算嗎?我不太擅長這個計算。 – 2013-03-12 16:25:36