Solr은 오픈 소스 검색 플랫폼으로, 빠르고 확장 가능한 검색 기능을 제공합니다. Solr을 사용하면 지리적인 정보를 포함한 복잡한 데이터에 대한 검색 및 분석을 쉽게 수행할 수 있습니다. 이 글에서는 파이썬을 활용하여 Solr의 지리 공간 검색과 위치 기반 서비스 개발하는 방법에 대해 알아보겠습니다.
Solr의 지리 공간 검색 설정하기
- Solr 인덱스에 지리 정보를 저장하기 위해 “schema.xml” 파일을 엽니다.
- 필요한 필드에 “solr.SpatialRecursivePrefixTreeFieldType” 유형을 추가합니다. (e.g., location 필드)
-
필드 유형의 위치에 다음과 같은 코드를 추가하여 공간 검색 설정을 합니다.
<fieldType name="location" class="solr.SpatialRecursivePrefixTreeFieldType" spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory" autoIndex="true" stored="true"/>
-
필드 유형의 위치에 다음과 같은 코드를 추가하여 공간 검색에서 사용할 필드를 정의합니다.
<field name="latitude" type="tdouble" indexed="true" stored="true"/> <field name="longitude" type="tdouble" indexed="true" stored="true"/> <field name="location" type="location" indexed="true" stored="true"/>
- “schema.xml” 파일을 저장하고 Solr 서버를 재시작합니다.
파이썬을 사용하여 Solr 지리 공간 검색하기
-
파이썬에서 Solr 서버와 연결하기 위해
pysolr
패키지를 설치합니다.pip install pysolr
-
다음과 같이 파이썬 코드를 작성하여 Solr에 연결하고 지리 공간 검색을 수행합니다.
import pysolr solr = pysolr.Solr('http://localhost:8983/solr') # Solr 서버 URL 설정 # 지리 공간 검색 쿼리 작성 query = { 'q': '*:*', 'fq': '{!geofilt pt=37.7749,-122.4194 sfield=location d=10}' } # 쿼리 실행 results = solr.search(**query) # 결과 출력 for result in results: print(result)
위의 코드에서 37.7749,-122.4194
는 검색할 중심 좌표를 나타내며, d=10
은 검색 반경을 설정합니다. 실제 사용 시에는 원하는 좌표와 검색 반경을 설정하여 사용하면 됩니다.
위치 기반 서비스 개발하기
위치 기반 서비스를 개발하기 위해서는 지도 데이터를 Solr에 적재하는 작업과 사용자의 위치 기반 검색을 구현하는 작업이 필요합니다. 이를 위해 다음의 단계를 수행합니다.
- 지도 데이터를 Solr에 적재합니다. 지도 데이터는 위치 정보를 포함한 데이터셋이어야 합니다.
- 사용자의 위치 정보를 얻어와서 Solr에 검색 쿼리를 전송합니다.
- Solr에서 반환된 검색 결과를 처리하여 사용자에게 보여줍니다.
위치 기반 서비스를 구현하려면 맵 API(예: Leaflet, Google Maps 등)와 사용자의 위치 정보를 처리하는 모듈(예: Geolocation API)을 사용하여 웹/모바일 애플리케이션에 통합해야 합니다.
이렇게 개발된 위치 기반 서비스는 사용자의 현재 위치를 기반으로 주변 관광지, 음식점, 상점 등을 찾는 등 다양한 서비스에 응용될 수 있습니다.
마무리
이번 글에서는 파이썬을 사용하여 Solr의 지리 공간 검색과 위치 기반 서비스 개발하는 방법에 대해 알아보았습니다. Solr은 높은 검색 성능과 확장 가능성을 제공하므로, 지리 정보를 활용한 검색이나 위치 기반 서비스 개발에 매우 유용한 도구입니다. 관련 기술을 익히고 활용하여 다양한 형태의 위치 기반 서비스를 개발해보세요!
참고자료
#Tech #Solr #검색 #지리공간 #파이썬