We, that is, Zero State (http://zerostate.net/) are looking to set up our own social networking site for our members. However, central to this will be a skills exchnage where members list what skills they have or businesses they own/run. The idea is for members to be able to preferentially do business with other members, ranging from babysitting to various forms of consultancy and anything in between. That means there must be a database lookup function members can use to list everyone with the skills needed. It also needs a geographical input eg "show me everyone within 5km who is a plumber".
Is this s/w suitable for that?
There is a website that offers something similar to what we want, but AFAIK it is propriatory:
http://www.swapaskill.com/
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by RaĆ¼l Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.
- Mark@Zander1983
Mark - 0 likes
- Dirk Bruere@dirkbruere
Dirk Bruere - 0 likes
- Dirk Bruere@dirkbruere
Dirk Bruere - 0 likes
- Dirk Bruere@dirkbruere
Dirk Bruere - 0 likes
- Mark@Zander1983
Mark - 0 likes
- andres.fortier@andres.fortier
andres.fortier - 0 likes
- Use DB support. Some DBs like Postrges have add ons that solve this kind of queries (http://postgis.refractions.net/) and it looks like MySQL has also one (http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html).
- Roll your own indexing scheme at the application level. I've implemented in the past different types of trees for 2D and 3D spatial searches (quadtrees, octrees, rtrees, etc) and, while they are not easy things to do, they are not too hard either.
- andres.fortier@andres.fortier
andres.fortier - 0 likes
- Dirk Bruere@dirkbruere
Dirk Bruere - 0 likes
- andres.fortier@andres.fortier
andres.fortier - 0 likes
You must log in to post replies.We have worked on something similar (www.skillterest.com). It requires quite a lot of customising. The search based on location is difficult. We achieved this with sphinx search. As in show me skills matching this search term within this radius. It's not easy though and is a work in progress.
Vazco's cache metadata plugin could be another option. I'd be interested in what other devs have to say because a search based on location is very interesting but difficult to achieve...
The obvious answer is to take a post/zip code using google maps and translate it to long/lat coords and store it. From there it is easy to measure distances between multiple points. The sticking point, for me at least, would be the database search algorithm.
Actually, it is not that difficult now I think about it, unless one wants to search in radius rather than grid squares. Since we know the starting coords in x,y we find out what each degree/second means in distance at that point (approx) and then do a search for all numbers such that x falls between x+n and x-n, y+n and y-n. It's not perfect, but it would be good enough.
The maths is here
http://en.wikipedia.org/wiki/Geographic_coordinate_system
Yes thats the method i use. The problem is elgg EAV model isn't suited to searching across multiple parameters. We indexed the long lat medadata in sphinx, but not easy. Alternative is http://community.elgg.org/plugins/1077153/1.0/vazco-cache-metadata-search-and-filtering-optimizer
any maybe there are other alternatives, im not sure...
Hi Dirk,
you can work on this at different levels, depending on your needs. The naive implementation would be to do a full (non indexed) DB search getting the planar distance between two points and filter those that fit your max length. In small distances this approach should work ok (http://mathforum.org/library/drmath/view/62720.html). However if you have many users (or many search requests) performing this kind of search may be too resource consuming, so you need to move to some sort of geospacial index. Two possible approaches for this are:
I know that in elgg you have support for gmaps and tagging entities with (lat,log) data, but I haven't heard of any spacial indexing. Anyway, unless you know you will be handling heavy traffic I would start with the naive version and see if you really need advanced indexing (I'm on the "make it right, make it fast" side :))
HTH,
Andrés
Oh, looks like you get to the same conclusion while I was writing :)
Well, the other problem is that I am not a server side programmer and know very little about it.
I was looking for a COTS solution I could just drop onto a Linux server
I guess that you should hire a developer to do that. IMO the naive search should not be a hard thing to do; you could contact the devs that made the GMaps modules to see how much such an extension would cost. Going for the spacial index version on the other hand would require some coding time, so that may be more expensive.