如何使用MongoDB实现关键字和位置搜索?

时间:2011-07-18 15:46:57

标签: asp.net-mvc mongodb lucene solr full-text-search

我正在尝试实施一个网络/智能手机应用,允许用户根据关键字和位置搜索地点,这是要求:

  • 用户可以通过输入关键字和位置进行搜索;位置可以是移动应用程序(lat和long)的邮政编码,城市/州或当前位置
  • 我们希望能够自定义相关性得分;我们需要能够基于关键字匹配,位置匹配和一些其他参数来定义我们自己的相关性算法。

我们使用ASP.NET MVC作为我们的Web开发框架,使用MongoDB作为数据存储。我们还在我们的数据库中维护所有邮政编码和城市/州以及他们的质心(纬度/经度)的列表。我们的想法是用我们自己的算法覆盖全文系统提供的评分(如Lucene得分)。我正在努力寻找解决这个问题的最佳解决方案。我想知道我们是否应该使用MongoDB全文搜索或尝试使用Lucene .NET或者Solr?任何帮助/指针/评论总是得到赞赏!

1 个答案:

答案 0 :(得分:3)

因此,作为一个起点,MongoDB不支持全文搜索。

它具有一些正则表达式功能,您可以在数组上编制索引。所以你可以在这里做一些事情,比如建立一系列关键词,以便进行基本的文本搜索。

然而,这与Solr和Sphinx相差甚远。

你将面临的另一个重大问题是相关评分。使用MongoDB执行任何类型的服务器端相关性评分将非常困难。没有真正有效的服务器端存储过程版本。您可能必须将结果提取给专用于该评分的客户端或服务器。

相关问题