如何使用ASP.NET中的位置信息实现搜索功能?

时间:2008-10-29 06:38:11

标签: asp.net search lucene.net

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

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

3 个答案:

答案 0 :(得分:2)

您可以实现自定义记分器,以按距离的顺序对结果进行排名,但您必须先过滤结果才能提高效率。您可以使用边界框方法,在您的地址周围以20密耳的平方过滤结果,然后应用排名。

如果我不记得不好,在行动书中的lucene中有一个距离相关算法的例子。它适用于java lucene,但api是相同的,你可以轻松地转换为c#或vb.net

答案 1 :(得分:0)

您正在寻找的是空间搜索。我不确定Lucene.Net是否有扩展可以执行此操作,但您可以查看NHibernate Spatial。除此之外,这些查询通常在数据库中完成。至少PostGreSQL,MySQL和SQL Server 2008具有空间查询功能。

答案 2 :(得分:0)

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

相关问题