2015-10-13 92 views
0

我有兩個solr模式。一個用於items和一個用於geolocation的項目。我想按距離對我的物品進行分類,先選擇較近的物品。 Items架構有product_id,city_id,etc,etcgeolocation架構有city_id,name,lat_lon字段。我的要求是顯示距用戶cityId小於d公里的結果。我可以使用bbox過濾器獲取d公里範圍內的所有城市ID,範圍是geolocation架構,然後使用geodist()函數按距離排序,然後將此ID列表作爲篩選查詢傳遞給項目架構。但我也希望這些項目以與城市id相同的順序出現。基於另一個陣列排列Solr文檔

像MySQL的:從項目選擇*,其中city_id在(58748,15741)ORDER BY場(city_id,15741,58748)

有沒有什麼解決Solr中實現這一目標?

回答

0
  1. 對項目和項目的地理位置使用一個模式。不需要有兩個模式。您可以在一個方案中將項目和地理位置屬性作爲不同的字段。
  2. 看看function queries第27項dist會爲你計算距離。
  3. 訂購,它是足夠使用ASC遞減後場看stack overflow answer in here