Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature]: Support geolocation datatype #27576

Open
1 task done
xiaofan-luan opened this issue Oct 9, 2023 · 16 comments
Open
1 task done

[Feature]: Support geolocation datatype #27576

xiaofan-luan opened this issue Oct 9, 2023 · 16 comments
Assignees
Labels
good first issue Good for newcomers hacktoberfest Issues picked by hacktoberfest kind/feature Issues related to feature request from users

Comments

@xiaofan-luan
Copy link
Collaborator

Is there an existing issue for this?

  • I have searched the existing issues

Is your feature request related to a problem? Please describe.

Under certain search and recommendation scenario, geolocation query is very common.
Say:
find most relevant items in this city.
find recommended friend in less than 10 miles.

The geolocation data looks like
"location" : {
"lat" : 40.12,
"lon" : -71.34
},

more details can be found at https://www.elastic.co/cn/blog/geo-location-and-search

Describe the solution you'd like.

No response

Describe an alternate solution.

No response

Anything else? (Additional Context)

No response

@xiaofan-luan xiaofan-luan added good first issue Good for newcomers kind/feature Issues related to feature request from users hacktoberfest Issues picked by hacktoberfest labels Oct 9, 2023
@shanghaikid
Copy link
Contributor

do you consider support postgis data types?

@SasikaSankalana
Copy link

Would love to work on this issue. Can you assign me?

@xiaofan-luan
Copy link
Collaborator Author

/assign @SasikaSankalana
please let me know if you have a design plan or you need any help

@lizzy-0323
Copy link

lizzy-0323 commented May 19, 2024

I would like to work on this issue, and I have signed up for OSPP 2024 in china.

@xiaofan-luan
Copy link
Collaborator Author

/assign @lizzy-0323
let me know if you need any help on it

@Dbhardwaj99
Copy link

Hey, I would like to work on this as well. I went through the docs and I have a general idea of how to approach this.

I think I may take some help from Elasticsearch solution to this and implement something like that.

@xiaofan-luan
Copy link
Collaborator Author

/assign @Dbhardwaj99

@xiaofan-luan
Copy link
Collaborator Author

welcome.
We actually have tantivy index , which has already support geo spatial index. What we need is to define geo spatial data type and implement write and read path

@Dbhardwaj99
Copy link

Ok, where are all the datatype defined in this project?

@charleskakumanu
Copy link
Contributor

Hi @xiaofan-luan
Can I take this up? And what’s the difference between JSON datatype and GeoLocation datatype?

@xiaofan-luan
Copy link
Collaborator Author

Hi @xiaofan-luan Can I take this up? And what’s the difference between JSON datatype and GeoLocation datatype?

geoloation data typs is usually a pair [33.3, 76.9] that point to a location.

We need to add this datatype and support filter on it. then might add some index on it and support more functions

@Uijeong97
Copy link

@xiaofan-luan

Can I know release goal of this issue?

@xiaofan-luan
Copy link
Collaborator Author

@xiaofan-luan

Can I know release goal of this issue?

Is there any use case for this? We are targeting on delivering this at Milvus 3.0

@xiaofan-luan
Copy link
Collaborator Author

But there definitely seems to be a lot to do before it's release

@Uijeong97
Copy link

@xiaofan-luan

When is milvus 3.0 expected to be released?

@xiaofan-luan
Copy link
Collaborator Author

early next year

czs007 pushed a commit that referenced this issue Oct 31, 2024
…#35990)

issue:#27576

# Main Goals
1. Create and describe collections with geospatial fields, enabling both
client and server to recognize and process geo fields.
2. Insert geospatial data as payload values in the insert binlog, and
print the values for verification.
3. Load segments containing geospatial data into memory.
4. Ensure query outputs can display geospatial data.
5. Support filtering on GIS functions for geospatial columns.

# Solution
1. **Add Type**: Modify the Milvus core by adding a Geospatial type in
both the C++ and Go code layers, defining the Geospatial data structure
and the corresponding interfaces.
2. **Dependency Libraries**: Introduce necessary geospatial data
processing libraries. In the C++ source code, use Conan package
management to include the GDAL library. In the Go source code, add the
go-geom library to the go.mod file.
3. **Protocol Interface**: Revise the Milvus protocol to provide
mechanisms for Geospatial message serialization and deserialization.
4. **Data Pipeline**: Facilitate interaction between the client and
proxy using the WKT format for geospatial data. The proxy will convert
all data into WKB format for downstream processing, providing column
data interfaces, segment encapsulation, segment loading, payload
writing, and cache block management.
5. **Query Operators**: Implement simple display and support for filter
queries. Initially, focus on filtering based on spatial relationships
for a single column of geospatial literal values, providing parsing and
execution for query expressions.
6. **Client Modification**: Enable the client to handle user input for
geospatial data and facilitate end-to-end testing.Check the modification
in pymilvus.

---------

Signed-off-by: tasty-gumi <[email protected]>
czs007 added a commit that referenced this issue Oct 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers hacktoberfest Issues picked by hacktoberfest kind/feature Issues related to feature request from users
Projects
None yet
Development

No branches or pull requests

7 participants