2008-10-29 148 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

相關問題