テキスト検索 MongoDBの機能(2.6以降)には、ファジー/部分的な文字列照合のための組み込み機能はありません。お気づきのとおり、このユースケースは現在、基本的なブール演算子と単語/フレーズのマッチングによる言語とステミングのサポートに重点を置いています。
要件と「効率的」な認定方法(速度、ストレージ、開発者の時間、必要なインフラストラクチャなど)に応じて、あいまい一致を検討するためのいくつかの可能なアプローチがあります。
-
すぐに利用できるsoundalikeおよび類似性アルゴリズムのいくつかを使用して、アプリケーションロジックにファジー/部分マッチングのサポートを実装します。このアプローチの利点には、インフラストラクチャを追加する必要がなく、要件に合わせて厳密に調整できることが含まれます。
より詳細な例については、次を参照してください:効率的MongoDBでのファジーおよびパーシャルマッチングの手法 。
-
より高度な検索機能を提供する外部検索ツールと統合します。これにより、デプロイが複雑になり、先行入力だけではやり過ぎになる可能性がありますが、アプリケーションの他の場所に組み込みたい他の検索機能(「このような」、単語の近接性、ファセット検索など)が見つかる場合があります。
たとえば、次を参照してください:実行方法あいまい-MongoコネクタとElasticSearchとのマッチング 。注:ElasticSearchのファジークエリ レーベンシュタイン距離に基づいています。
-
Twitterのオープンソース
typeahead.js
のようなオートコンプリートライブラリを使用します 、提案エンジンとクエリ/キャッシングAPIが含まれています。 Typeaheadは、実際には他のバックエンドアプローチのいずれかを補完するものであり、その(オプションの)提案エンジンブラッドハウンド ローカルストレージでのデータのプリフェッチとキャッシュをサポートします。