2011-07-18 23 views
3

私は、ユーザーが、ここでのキーワードと場所とに基づいて場所を検索できるようにするウェブ/スマートフォンアプリを実装しようとしていますが要件です:MongoDBでキーワードと位置検索を実装する方法は?

  • ユーザーのキーワードと場所を入力することで検索できるようにしなければなりません。場所は郵便番号、市/州、またはモバイルアプリの現在地(緯度および経度)にすることができます。
  • 関連性スコアをカスタマイズできます。キーワードマッチング、位置マッチング、その他のパラメータに基づいて、独自の関連性アルゴリズムを定義できる必要があります。

Web開発フレームワークにはASP.NET MVCを使用し、データストアとしてはMongoDBを使用します。また、データベースには、すべての郵便番号と市町村および州の重心(緯度/経度)のリストが保持されます。私たちの考えは、フルテキストシステム(Luceneスコアリングなど)が独自のアルゴリズムで提供するスコアリングを無効にします。私はこれに対処するための最善の解決策を見つけることを試みています。 MongoDB全文検索を使うべきか、Lucene .NETを使うのか、それともSolrを使うべきなのか疑問に思っていますか?どんなヘルプ/ポインタ/コメントも常に感謝しています!

+0

MongoDBの代わりにLucene.netを使用します – BlackTigerX

答えて

3

開始点として、MongoDBはフルテキスト検索をサポートしていません。

これにはいくつかの正規表現機能があり、配列にインデックスを付けることができます。基本的なテキスト検索を可能にするキーワードの配列を作成するなど、ここでいくつかのことを行うことができます。

しかし、これはSolrとSphinxのものから遠いです。

もう1つの大きな問題は、関連性スコアリングによるものです。 MongoDBでは、サーバー側の関連性スコアリングを行うのが非常に難しいでしょう。サーバ側のストアドプロシージャの効率的なバージョンはありません。おそらく、結果をその得点に特化したクライアントまたはサーバーにプルする必要があります。

関連する問題