2008-10-29 62 views
1

我目前正在研究使用Lucene.NET为我正在处理的Web应用程序提供搜索功能。但是,我正在实现的搜索功能不仅需要进行全文搜索,还需要通过接近指定地址来对结果进行排名。如何在ASP.NET中使用位置信息实现搜索功能?

Lucene.NET可以处理这个需求吗?或者是否需要实施某种方法将点击分组到不同的位置(例如,少于5英里,少于10英里等),然后使用Lucene.NET对这些组内的项目进行排名?还是有一种完全不同的方式,我忽略了?

回答

0

你在找什么叫空间搜索。我不确定是否有扩展到Lucene.Net来做到这一点,但你可以看看NHibernate Spatial。除此之外,这些查询通常在数据库中完成。至少PostGreSQL,MySQL和SQL Server 2008具有空间查询功能。

0

经过一些额外的研究,我想我可能已经找到了我的答案。我将使用Lucene.NET将搜索结果按其他因素过滤,然后使用来自Google或Yahoo的经过地理编码的信息按距离排序结果。

2

您可以实现一个自定义记录器,按照距离的顺序对结果进行排序,但您必须先筛选结果才能高效。您可以使用边界框方法,在您的地址周围20平方米的平方中筛选结果,然后应用排名。

如果我没记错,在动作书中的lucene中有一个距离相关算法的例子。这是为java lucene,但api是相同的,你可以很容易地转换为c#或vb.net

相关问题