The beauty of OSS is when you can download it from the Issue tracking or directly from the trunk...
The crazy of OSS is when you must look inside n-personal-branchs to find something useful for your need and you must push a patch in your personal branch. 2009/11/5 Wayne Douglas <[email protected]> > > the beauty of OSS!! > > :) > > On Thu, Nov 5, 2009 at 4:27 PM, ccollie <[email protected]> wrote: > > > > contact me by email ( g b o y a h [at] gmail dotcom ). i have code > > that handles proximity calcs that ive been meaning to contribute to NH > > Contrib. it works for any driver supporting basic trig operations. > > > > On Nov 4, 4:28 pm, Kevin Pang <[email protected]> wrote: > >> Yes, I've seen both NHiberante Search and Spatial. Unfortunately, > >> we're using SQL Server 2005 so NHibernate Spatial isn't an option. I > >> might go with NHibernate Search, but I'd prefer to do it using the > >> current architecture in place. > >> > >> On Nov 4, 1:15 pm, Fabio Maulo <[email protected]> wrote: > >> > >> > did you see NHibernate.Spatial ? > >> > >> > 2009/11/4 Kevin Pang <[email protected]> > >> > >> > > I've come up with a couple solutions, but they don't feel all that > >> > > great... Here's what I've gathered so far: > >> > >> > > I can add support in HQL for SQL's CONTAINS function by using a > custom > >> > > NHibernate dialect like so: > >> > >> > > public class MyDialect : MsSql2008Dialect > >> > > { > >> > > public MyDialect() > >> > > { > >> > > RegisterFunction("contains", new StandardSQLFunction > >> > > ("contains", null)); > >> > > } > >> > > } > >> > >> > > That will allow me to construct the following HQL query: > >> > >> > > session.CreateQuery("from Restaurant where contains > >> > > (RestaurantName, :keywords)") > >> > > .SetString("keywords","Sizzler") > >> > > .List(); > >> > >> > > But that doesn't solve the issue with retrieving and sorting by > >> > > distances. It seems in order to do this I have a couple options: > >> > >> > > 1. Add a formula property to my Restaurant.hbm.xml file that will > >> > > calculate the distance. This would look something like this: > >> > >> > > <property name="Distance" formula="dbo.DistanceBetween(@lat, @long, > >> > > Latitude, Longitude)" type="double" />. > >> > >> > > However, this has the side effect (I think) that retrieving any > >> > > Restaurant will run this distance calculation. I don't want this to > >> > > happen. Retrieving a single restaurant by its ID shouldn't need to > >> > > calculate any distances. I only care about distances when users are > >> > > searching for restaurants near them. > >> > >> > > 2. Break everything out into a <sql-query> that will return a > custom > >> > > type (e.g. RestaurantSearchResult). This would look something like > >> > > this: > >> > >> > > <sql-query name="RestaurantQuery"> > >> > > <return class="RestaurantSearchResult" alias="restaurants"> > >> > > <return-property name="RestaurantId" column="RestaurantId" /> > >> > > <return-property name="Distance" column="Distance" /> > >> > > </return> > >> > >> > > SELECT > >> > > Restaurants.*, > >> > > dbo.DistanceBetween(@lat, @long, Latitude, Longitude) AS > >> > > Distance > >> > > FROM Restaurants > >> > > WHERE Contains(RestaurantName, @keywords) > >> > > </sql-query> > >> > >> > > This seems like it should do what I want, but for some reason > doesn't > >> > > feel all that right. Any suggestions would be appreciated. > >> > >> > > Kevin > >> > >> > > On Nov 4, 3:31 am, Wayne Douglas <[email protected]> > wrote: > >> > > > you should think about using NHIbernate.Search for this :) > >> > >> > > > On Tue, Nov 3, 2009 at 5:26 PM, Kevin Pang <[email protected]> > wrote: > >> > >> > > > > Let's say I'm building a restaurant review application (e.g. > Yelp) > >> > > > > using SQL Server 2005 and NHibernate. I want to allow users to > search > >> > > > > for restaurants by keywords and/or proximity to their current > >> > > > > location. The keyword search will use the SQL Server 2005 full > text > >> > > > > search CONTAINS function, while the distance calculation will be > done > >> > > > > using a stored procedure that can calculate the distance between > two > >> > > > > lat/long points. > >> > >> > > > > For the sake of simplicity, let's say I have a table called > >> > > > > Restaurants with the following columns: > >> > >> > > > > RestaurantId int > >> > > > > RestaurantName nvarchar(100) > >> > > > > Latitude float > >> > > > > Longitude float > >> > >> > > > > What's the best way to construct this query? > >> > >> > > > > A few requirements: > >> > > > > 1. Users can specify keywords or location or both or neither > >> > > > > 2. The end result needs to be ranked by distance, then > relevance > >> > > > > 3. Resulting IList (or whatever we're returning) needs to have > >> > > > > Restaurant information as well as the distance in it for > displaying > >> > > > > purposes. I'm assuming we need to create a new class just to > handle > >> > > > > the search results (e.g. RestaurantSearchResult which holds both > a > >> > > > > Restaurant instance and a Distance property)? > >> > >> > > > -- > >> > > > Cheers, > >> > >> > > > w:// > >> > >> > -- > >> > Fabio Maulo > > > > > > > > > -- > Cheers, > > w:// > > > > -- Fabio Maulo --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
