2017-09-02 51 views
-1

我有一個搜索索引的辦公室有多個位置。我想通過地址過濾這些辦公室並在地圖上顯示它們。在搜索特定地址時,某些辦公室在所需地點以及不相關的地點都有地點。例如,如果我搜索紐約,指數返回兩家公司谷歌地圖不包括特定範圍內的位置

company_a.locations = [New York, San Francisco] 
company_b.locations = [New York] 

的問題是,我現在所有的3個地點顯示引腳,包括舊金山,即使我真正關心的是紐約。如果我在紐約搜索特定的郵政編碼並且收到了一些實際位於新澤西州的位置,則這是正確的,因此它對查詢非常具體。

我可以實現什麼邏輯來理解任意位置與搜索結果無關?

我正在盡我所能來定義問題,並意識到它很難定義,所以我將不勝感激任何正確的方向。如果有幫助,我使用algolia和谷歌地圖。

回答

1

你可以想象建立你的記錄略有不同,爲了有關於每個位置的詳細信息:

{ "name": "company_a", "_geoloc": [ { "city": "NY", "lat": 40.7128, "lng": 74.0059 }, { "city": "SF", "lat": 37.7749, "lng": 122.4194 } ] }, { "name": "company_b", "_geoloc": [ { "city": "NY", "lat": 40.7128, "lng": 74.0059 } ] }

_geoloc場已備案的使用Algolia的geosearch功能(可能有用在你的用例中)。

如果您使用內置的geosearch,您將不必過濾前端的記錄以刪除替代方案。如果您使用常規過濾器,則必須檢查Algolia的結果並刪除位於不同城市的替代品。

爲了完整起見,你也可以簡單地複製你的記錄,爲了讓每個記錄單的位置:

{ "name": "company_a", "location": "SF" }, { "name": "company_a", "location": "NY" }

+0

我每記錄一個位置去,並認爲這是最易維護。感謝您的建議。 – user2954587