Hi Suho, Please loot this, and some of the scenarios should be handy for IoT
--Srinath On Mon, Sep 12, 2016 at 9:52 AM, Janaka Thilakarathna <[email protected]> wrote: > Hi all, > > I am currently working on the project Multidimensional Space Search with > Lucene 6 for DAS. Here is a list of possible functionalities (and some > example scenarios) that we can provide using Lucene 6.1 's multi > dimensional space search. > (This is a brief description on collected details, to see more info and > the test codes, please visit my git repo > <https://github.com/janakact/test_lucene>.) > > Multidimensional space points in Lucene 6 can be categorized into two > types of space points depending on their query types and distribution of > points in the space. > > 1. General Multidimensional space points. > 2. Locations on the planet surface. > > > *1. General Multidimensional Space Points* > This is the generic type of multi dimensional space points. Those are > actually vector spaces. Space has a dimension K. In a K-dimensional space a > point is represented by a K number of numeric values. > > For an example 3D point will be represented by 3 float/double values. > (because distance is measured as a floating point number.) > > *Possible Queries for API* > > - Search for points with exact given values. > - Search for points which has one of the value from a given set of > values. > - Search for points within a given range. > - Get the number of points which has exact point. > - Get the number of points within a given range. (Ranges are > multidimensional ranges. In 3D, they are boxes.) > - Divide points into range-buckets and get the count in each buckets. > (Range bucket is a range which has a label in it) > > *Scenarios* > > Since this is a more general space definition this could have many general > applications. These dimensions can be used to represent any numeric field. > They can be used to represent locations in a 3D space if we use 3 > dimensional points. We can use it to represent both space and time if we > use 4 dimensions. (X, Y, Z, time all are numeric fields. Double can be > used). > > *Independent Parameters* > > It can be used to represent completely independent parameters. Think there > is a set of employees. A multi dimensional space can be used to represent > different parameters of them. > > *Example:* Age, salary, height, average number of leaves per month. These > are 4 numeric fields which are completely independent. It can be > represented as a 4 Dimensional Space. Each person will be represented as a > point in this space. Then the user can use Lucene to query on these > people. > > - What is the number of people who's age is 25-30 years, Height is > 160cm to 180cm, Salary is 50,000 to 75,000 and take 1-5 average number of > leaves per month? > - Or user can divide people into different buckets and count them > depending on the ranges for each parameter. > > (Of course this can be done by indexing those parameters separately and > query using 'AND' keyword, but indexing them together as a multidimensional > space will make searching more efficient) > > *2. Locations on the planet surface. (Latitude, Longitude)* > Here points represents locations on top of the planet surface. This is a > more specific type of search provided by Lucene to index and search > geographical locations. > > These points are created using only the latitude and longitude values of > locations. > **Please consider altitude is not yet supported by Lucene.* > > Since this is specifically designed for Locations search it has more > useful queries than General Multidimensional Points. > > *Possible Queries for the API* > > - Search for the K-nearest points from a given location. (return the > given number of points) > - Search for the Points within a given radius from a given point. > - Sort them by the distance from a given location. > - Points inside a polygon.(Polygons are geometric shapes on the > surface of the planet. Example: map of a country) > - Get the number of points inside a polygon.* > - Get the number of points in each bucket where buckets are specified > as polygons. > - Get the number of points in each bucket where buckets are specified > by the distance from a given location. > > * Composite polygons are possible. > *Scenarios* > > *Airport Scenario * > If we index the set of airports in the world as GeoPoints. Following > queries are possible examples. (Here is the test code I implemented as an > example.) > <https://github.com/janakact/test_lucene/blob/master/src/test/java/TestMultiDimensionalQueries.java> > > - Find closest set of airports to a given town. > - Find the set of airports within a given radius from a particular > town. > - Find the set of airports inside a country. (Country can be given as > a polygon) > - Find the set of airports within a given range of Latitudes and > Longitudes. It is a Latitude, Longitude box query. (For a examples: > Airports closer to the equatorial) > - Find the set of airports closer to a given path. (Path can be > something like a road. Find the airports which are less than 50km away from > a given highway) > - Count the airports in each country by giving country maps as > polygons. > > *Indexing airplane paths* > > - It is possible to query for paths which goes through an interesting > area. > > Above example covers most of the functionalities that Lucene Space search > provides. > Here are some other examples, > > - Number of television users a satellite can cover.(by indexing > receivers' locations) > - To find the number of stationary telescopes that can be used to > observe a solar eclipse. (by indexing telescope locations. Area the solar > eclipse is visible, can be represented as a polygon > http://eclipse.gsfc.nasa.gov/SEplot/SEplot2001/SE2016Sep01A.GIF > <http://eclipse.gsfc.nasa.gov/SEplot/SEplot2001/SE2016Sep01A.GIF>) > > So, that's it. > Thank you. > > Regards, > Janaka Chathuranga > > -- > Janaka Chathuranga > *Software Engineering Intern* > Mobile : *+94 (**071) 3315 725* > [email protected] > > <https://wso2.com/signature> > > -- ============================ Srinath Perera, Ph.D. http://people.apache.org/~hemapani/ http://srinathsview.blogspot.com/
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
