Thank you for the excellent explanation David. My use case is in the signal processing area. I have a wave that is in time domain & it is converted to frequency domain on 8 different bands (FFT) ie, an 8D point. The question for me is "If I have a set of waves (8D points) in the database and I have a lookup wave, what is the best match ?"
On Sat, May 11, 2013 at 10:42 PM, David Smiley (@MITRE.org) < dsmi...@mitre.org> wrote: > Hi Kiran. > > The often-forgotten PointType field type can be configured to hold a > variable number of dimensions. See the "dimension" attribute of the field > type's configuration in the example schema. This field type is really just > a kind of a macro field type for a configurable number of numeric fields. > To do a range search you could do: myPointField:[x1,y1,z1 TO x2,y2,z2] (3 > dimensional). This works identically to AND'ing together a series of range > searches on number fields you explicitly configure. If the space you want > to search isn't a simple set or ranges on the dimensions, then you might be > stuck or at least forced to code a solution, but the scalability of any > solution is very unlikely to be very scalable (i.e. if you have a ton of > data this may be a problem). There are some function-queries (AKA > ValueSources) that compute special distance calculations in N-dimensional > space: > http://wiki.apache.org/solr/FunctionQuery#dist dist(), hsine() and > sqedist() can take a PointType or you can configure each numeric field > individually and reference them as seen on the wiki. One key limitation of > PointType (and LatLonType) is that it does not support multi-valued fields > (no multiple values for any dimension per document). > > You linked to info on "K-D Trees". Lucene internally at its essence has > *one* index scheme, which is a sorted list of bytes (often tokenized words > in text but can be any bytes) that map to a list of document ids. There > are > a class of trees in computer science called a "Trie" AKA "PrefixTree" that > are fundamentally based on just sorted keys. > http://en.wikipedia.org/wiki/Trie Lucene's single-dimensional numeric > range > fields are in fact tries; they can store a variable number of > single-dimensional values per document. For 2-dimensional spatial, there > is > the SpatialPrefixTree abstraction with Geohash and QuadTree > implementations. > These support not just indexing Points but any Spatial4j shape, which is > approximated to the grid. Supporting an N-dimensional Trie would require > writing a custom SpatialPrefixTree. The spatial > RecursivePrefixTreeStrategy > has spatial search algorithms that use a SpatialPrefixTree but makes no > assumptions about the dimensionality of the tree or related shapes, so no > change there (pretty cool, I think). You would need to implement some > N-dimensional Spatial4j shapes. An n-dimensional Point -- trivial. A > multi-dimensional range shape (i.e. a square or cube or ...) is not hard. > Anything more complex in N dimensions is going to get hard fast. Finally, > there needs to be a way to parse this shape, which for a custom hack could > simply be a Solr QParser but longer term would be Spatial4j's not yet > finished extensible WKT parser. > > That was probably more info than you care for but someone else may read > this > and find it interesting. > > Kiran, I'm curious, what do you want an n-dimensional field for? > > p.s. A new SpatialPrefixTree implementation is slated to be developed this > summer as part of the Google Summer of Code (GSOC). I hadn't planned to > add > N-dimensionality to the feature list. It could be a stretch-goal maybe. > https://issues.apache.org/jira/browse/LUCENE-4922 > > ~ David > > > > Kiran Jayakumar wrote > > Hi, > > > > Does Solr support multi dimensional spatial search ? > > > > http://en.wikipedia.org/wiki/K-d_tree > > > > Thanks > > > > > > ----- > Author: > http://www.packtpub.com/apache-solr-3-enterprise-search-server/book > -- > View this message in context: > http://lucene.472066.n3.nabble.com/Multi-dimensional-spatial-search-tp4062515p4062646.html > Sent from the Solr - User mailing list archive at Nabble.com. >