2017-03-22 104 views
0

這是一個空間搜索的反向概念,其中候選人決定他可以工作的距離。每個文檔中兩點之間的距離和距離小於英里的距離

我有一個候選人c1說他可以在離他的位置20英里的地方工作,而c2說他可以離他的位置10英里。如果我的搜索地點是兩位候選人的10英里,我的結果應該按距離列出候選人並按距離排序。

我的想法是從搜索點到候選點的距離,並檢查距離是否滿足每個候選人配置的英里數。

我使用q = {!func} geodist()和sort = score asc,現在我需要根據在他的文檔中配置的Miles進行過濾。 得分< = Miles應該作爲過濾器應用。

你們能幫我解決嗎,這對我來說是一個很大的幫助。謝謝。

回答

0

您需要爲候選人建立索引,而不是帶點,但帶圓圈(中心是他們的位置,半徑是他們願意前往的距離)。

然後你用一個與任何圓相交的點fq。在這個問題中尋找細節:Solr spatial search using an indexed field for radius?

+0

但在數學上,一個最簡單的解決方案是找到兩點之間的距離,並檢查距離是否小於配置的候選人的距離賴特?這是解決方案的表現很低,我是新來solr所以想知道.. –

+0

我沒有足夠的聲譽投票,請接受這個評論作爲我的投票,非常感謝你幫助我.... ....: ) –

+0

我可以知道如何對搜索位置附近的人進行排序嗎?以便我們可以實現相關性,以基於最近的位置爲基礎。 –